我想跟踪活动订阅我的IObservable的数量?我以为我可以通过递增/递减每当“某人”电话订阅/处置计数器实现这一点。
我怎样才能做到这一点 ?还是有做的更好的办法?
这似乎是通过引用计数内部完成,但订阅计数器不会暴露。
谢谢
要做到这一点最简单的方法是通过包装的可观察到在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();
};
});
}