2016-07-24 90 views
1

如果在特定的時間範圍內沒有收到一個值,我想結束基於事件的觀察值。如何結束熱點觀察?

// 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像這樣,但這將是從訂閱開始的絕對時間段。我想要的是,如果一個值沒有被返回,例如,從前一個值的生成時間開始,那麼停止並提高OnCompleted事件。

如果觀測值在2秒內沒有產生任何值,那麼也停止並提高OnCompleted事件。

我該怎麼做,而客戶端代碼不得不保持這個狀態的最後一次產生的時間?

回答

2

試試這個:

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

只需更換int與任何類型的源可觀察的。