【发布时间】:2012-07-27 18:06:45
【问题描述】:
也许我在这里推动了 Rx 的合理范围,但我想做的是轮询远程状态,但将轮询速度限制在合理的范围内。
我目前拥有的伪代码:
IObservable<data> RemoteObservable(Remote remote)
{
var onceonly = Observable.FromAsyncPattern(remote.Begin, remote.End);
return Observable.Defer(() => onceonly())
.ObserveOn(Scheduler.ThreadPool)
.Repeat();
}
我不知道在其中使用Throttle 或Interval 是否有帮助。在我看来,节流是关于限制传入事件,而不是限制重复率。
编辑:我就以下子问题提出/回答了一个单独的问题:How to make a `Defer`ed observable only subscribe for the first subscriber?。
子问题:有没有办法允许对这种 Observable 进行两次订阅,而不会创建两倍的远程调用?我问是因为我想在 UI 中持续显示状态,但也在某些活动期间对其进行监控(这是我尝试使用 Observables 执行此操作的原因之一)。
【问题讨论】:
标签: c# system.reactive polling