如何结束热观察

本文关键字:观察 结束 何结束 | 更新日期: 2023-09-27 17:58:19

如果在特定的时间范围内没有收到值,我想结束基于事件的可观察。

// This will go on forever because it is a hot
// observable based on an event
// If a value has not been produced in, say, 2 seconds
// I would like to stop it and raise an OnCompleted
var observable = Observable.FromEvent(...);

我可以这样做TakeUntil,但这将是从订阅开始的绝对时间段。我想要的是,如果在上一个值生成后的2秒内没有返回值,那么停止并引发OnCompleted事件。

如果在2秒钟内可观察到的对象从未生成任何值,则也停止并引发OnCompleted事件。

如果客户端代码不必保持上一个值生成时间的状态,我该如何做到这一点?

如何结束热观察

试试这个:

var query = observable.Timeout(TimeSpan.FromSeconds(2.0), Observable.Empty<int>());

只需将int替换为任何类型的可观察源即可。