Если я правильно понял вашу проблему, вы можете использовать оператор Throttle ....
var subscription = myObservable
.Throttle(Timespan.FromSeconds(0.5))
.Subscribe(DoExpensiveOperation) ;
В документации MSDN написано "Игнорируется значения из наблюдаемой последовательности, за которыми следует другое значение до истечения срока с указанным источником, dueTime и планировщиком." Другими словами, дроссель выдаст событие только после ожидания указанного промежутка времени. Однако при каждом получении нового события период ожидания сбрасывается, поэтому, если у вас есть события, поступающие быстро, ничего не будет сгенерировано до конца последовательности. Этот сайт является отличным фоном для операторов Reactive. Я также рекомендую Rx .Net HOL , который является старым и немного устаревшим, но который охватывает многие понятия в очень удобочитаемом виде.