«Стоп» - это уведомление OnComplete
. «Бросок» - это уведомление OnError
. Есть операторы, доступные для pu sh обоих типов уведомлений.
Вы также можете использовать оператор TakeWhile
, который также доступен в IEnumerable
, и они ведут себя практически одинаково.
Observable.Interval(TimeSpan.FromSeconds(0.01))
.Where(x => x % 2 == 0)
.TakeWhile(x => x != 100)
.Timestamp()
.Select(x => x.Timestamp);
Для уведомлений, которые асинхронны с вашим потоком есть операторы ...Until
, такие как TakeUntil
, SkipUntil
. Например, чтобы остановить наблюдаемое через 100 секунд.
Observable.Interval(TimeSpan.FromSeconds(0.01))
.Where(x => x % 2 == 0)
.TakeUntil(Observable.Timer(TimeSpan.FromSeconds(100)))
.Timestamp()
.Select(x => x.Timestamp);