Я использую реактивные расширения для сопоставления данных в буферы по 100 мсек. :
this.subscription = this.dataService
.Where(x => !string.Equals("FOO", x.Key.Source))
.Buffer(TimeSpan.FromMilliseconds(100))
.ObserveOn(this.dispatcherService)
.Where(x => x.Count != 0)
.Subscribe(this.OnBufferReceived);
Это работает нормально. Однако я хочу, чтобы поведение немного отличалось от того, которое обеспечивается операцией Buffer
. По сути, я хочу сбросить таймер, если получен другой элемент данных. Только когда данные не были полученный в течение всех 100 мс, я хочу обработать это. Это открывает возможность никогда не обрабатывать данные, поэтому я также должен иметь возможность указать максимальное количество. Я бы вообразил что-то вроде строк:
.SlidingBuffer(TimeSpan.FromMilliseconds(100), 10000)
Я осмотрелся и не нашел ничего подобного в Rx? Может ли кто-нибудь подтвердить / опровергнуть это?