C# 我如何结束一个热的观察?

C# 我如何结束一个热的观察?,c#,system.reactive,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.FromEv

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

// 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>());
var query=observable.Timeout(TimeSpan.FromSeconds(2.0),observable.Empty());
只需将
int
替换为您可以观察到的源代码的任何类型