Reset рассчитывается выше максимального временного интервала, в агрегировании на основе количества Rx

Фильтрация с подсчетом без ограничения времени

IObservable filteredStream = changes.Buffer(3);

Как ввести бездействие reset?

enter image description here

Но как ввести тайм-аут TimeSpan tooLong, чтобы подсчет возобновлялся с нуля всякий раз, когда интервал между двумя значениями превышает этот максимум?

Ответ 1

Я думаю, что это то, что вам нужно.

var longGap = source.Throttle(tooLong);
var filtered = source
  .Window(() => { return longGap; })  // Gives a window between every longGap
  .Select(io => io.Buffer(maxItems).Where(l => l.Count == maxItems))
  .Switch();  // Flattens the IObservable<IObservable<IList>> to IObservable<IList>