如果在最近5秒內收到UDP消息,並且如果發生超時,則返回false,我試圖創建一個IObservable<bool>
返回true
。反應性擴展超時不停止序列?
到目前爲止,我有這樣的:
public IObservable<Boolean> GettingUDPMessages(IPEndPoint localEP)
{
var udp = BaseComms.UDPBaseStringListener(localEP)
.Where(msg => msg.Data.Contains("running"))
.Select(s => true);
return Observable
.Timeout(udp, TimeSpan.FromSeconds(5))
.Catch(Observable.Return(false));
}
的這個問題是: -
- 一旦返回false,序列停止
- 我只是真的需要
true
或false
狀態變化。
我可以使用Subject<T>
但我需要小心處理UDPBaseStringListener
觀察,當沒有更多的用戶。
更新
每次我得到一個UDP消息,我想它返回一個true
。如果我在最近5秒內沒有收到UDP消息,我希望它返回false
。
FYI,'Timeout'具有重載採用可觀察到的一個替代,用於當時間發生超時而不是「投擲」並需要「捕捉」。 –
讀者可能也有興趣[1](http://stackoverflow.com/q/23394441/1267663),[2](http://stackoverflow.com/q/12786901/1267663)和[3]( http://stackoverflow.com/q/35873244/1267663)。 – Whymarrh