RX:当订阅启动或设置执行相应的操作?

问题描述 投票:5回答:2

我想跟踪活动订阅我的IObservable的数量?我以为我可以通过递增/递减每当“某人”电话订阅/处置计数器实现这一点。

我怎样才能做到这一点 ?还是有做的更好的办法?

这似乎是通过引用计数内部完成,但订阅计数器不会暴露。

谢谢

.net system.reactive
2个回答
7
投票

要做到这一点最简单的方法是通过包装的可观察到在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.
    });
});

4
投票

谢谢,这是我需要的。这可以变成操作如下:

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();
                };
            });
}
© www.soinside.com 2019 - 2024. All rights reserved.