.NET ReactiveExtensions: использовать Sample () с переменной timepan - PullRequest
0 голосов
/ 14 июня 2019

Учитывая высокочастотный наблюдаемый поток данных, я хочу излучать элемент каждые XX секунд.

Обычно это делается в RX с использованием .Sample (TimeSpan.FromSeconds (XX))

Однако ... Я хочу, чтобы интервал времени менялся в зависимости от некоторого свойства данных.

Допустим, мои данные:

class Position {... public intСкорость;}

Если скорость меньше 100, я хочу отправлять данные каждые 5 секунд.Если скорость выше 100, это должно быть каждые 2 секунды.

Возможно ли это с готовым Sample (), или мне нужно что-то построить самому?

1 Ответ

0 голосов
/ 14 июня 2019

Дайте мне знать, если это работает:

var query =
    source
        .Publish(ss =>
            ss
                .Select(s => s.Speed < 100 ? 5.0 : 2.0)
                .Distinct()
                .Select(x => ss.Sample(TimeSpan.FromSeconds(x))));
...