我想知道在Timeout触发之前获取序列中最新元素的最佳方法是什么?
我有一个代码可以不时ping远程服务,我希望能够识别一个已脱机的代码。
使用Timeout扩展我想到了:
heartbeatResponseObservable.Timeout(Timeout, Observable.Return(new HeartbeatBusMessage.Timeout()))
这种工作,但它不允许我找到哪些服务已经消失。 我想要的是Timeout扩展,其中流中的最新消息作为参数在其生成的错误消息中提供一些信息。
如何获取Timeout扩展中的最新序列元素?
答案 0 :(得分:1)
// Create 10 events quickly, then once every two seconds.
var source =
Observable.Interval(TimeSpan.FromMilliseconds(100))
.Take(10)
.Concat(Observable.Interval(TimeSpan.FromSeconds(2)));
// Set a timeout of 1 second.
var last = source.TimeOutExtension(TimeSpan.FromSeconds(1));
last.Subscribe(Console.WriteLine); // outputs 9
可以像这样使用:
correctClockSkew