我试图让一个IObservable
返回true
如果一个UDP消息在最后5秒,如果发生超时被接收,一个返回false.
到目前为止我有这个:
public IObservableGettingUDPMessages(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
改变状态.
我可以使用a Subject
但是UDPBaseStringListener
当没有更多订阅者时我需要小心处理observable.
更新
每次我收到UDP消息,我都希望它返回一个true
.如果我在最近5秒内没有收到UDP消息,我希望它返回一个false
.