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