2012-07-27 225 views
1

鉴于此伪代码,我想要做的是确保如果我有多个订户,我不会饱和我的remote源与额外轮询每个订阅者。如何使'Defer`ed observable只订阅第一个订阅者?

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

回答

2

答案是RefCount,(发现here):

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