如何使'Defer`ed observable只订阅第一个订阅者?

时间:2012-07-27 08:43:13

标签: c# system.reactive

鉴于这个伪代码,我想要做的是确保如果我有多个订阅者,我将不会通过为每个订阅者进行额外轮询来使我的remote源饱和。

IObservable<data> RemoteObservable(Remote remote) 
{
   var onceonly = Observable.FromAsyncPattern(remote.Begin, remote.End);
   return Observable.Defer(() => onceonly())
                    .Repeat();
}

1 个答案:

答案 0 :(得分:2)

答案是RefCount,(找到here):

   return Observable.Defer(() => onceonly())
                    .Repeat()
                    .Publish()
                    .RefCount();