如何结束热观察?

时间:2016-07-24 07:30:48

标签: c# system.reactive

如果在特定时间范围内未收到任何值,我想根据事件结束观察。

// 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事件。

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

1 个答案:

答案 0 :(得分:2)

试试这个:

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

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