Я использую реактивные расширения для сопоставления данных в буферы 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
. По сути, я хочу, чтобы reset таймер, если получен другой элемент данных. Только когда данные не получены за все 100 мс, я хочу обработать его. Это открывает возможность никогда не обрабатывать данные, поэтому я также могу указать максимальное количество. Я мог бы представить что-то вроде:
.SlidingBuffer(TimeSpan.FromMilliseconds(100), 10000)
Я посмотрел вокруг и не смог найти ничего подобного в Rx? Кто-нибудь может подтвердить или опровергнуть это?