Dot-Net
RX:在訂閱開始或處置時執行操作?
我想跟踪我的 IObservable 的有效訂閱數量?我想我可以通過每當“某人”呼叫訂閱/處置時遞增/遞減計數器來實現這一點。
我怎樣才能做到這一點 ?或者有更好的方法嗎?
它似乎是由 RefCount 在內部完成的,但訂閱計數器沒有公開。
謝謝
最簡單的方法是將 Observable 包裝在 Observable.Create 中:
IObservable<string> myObs; var returnObservable = Observable.Create<string>(subj => { // TODO: Write code to do stuff on Sub var disp = myObs.Subscribe(subj); return Disposable.Create(() => { disp.Dispose(); // TODO: Write code to do stuff in unsub. }); });
謝謝,這正是我所需要的。這可以變成一個運算符,如下所示:
public static IObservable<TSource> OnSubscribe<TSource>(this IObservable<TSource> source, Action onSubscribe, Action onDispose) { return Observable .Create<TSource>(observer => { onSubscribe?.Invoke(); var subscription = source.Subscribe(observer); return () => { subscription.Dispose(); onDispose?.Invoke(); }; }); }