gpt4 book ai didi

c# - 我如何确定 IObservable 上有多少/明确的订阅者?

转载 作者:行者123 更新时间:2023-11-30 20:11:04 25 4
gpt4 key购买 nike

我想知道是否有办法计算出有多少观察者订阅了一个 IObservable 对象。

我有一个管理过滤后的 IObservable 实例的 HashTable 的类,我想实现一个“健康检查”例程,它可以确定订阅者是否已被删除/处置,而无需每个订阅者明确通知他们完成的类(即应该通过 Dispose() 或 Unsubscribe() 隐式)。

这并没有真正回答问题 -

should-i-use-listiobserver-or-simply-actiont-to-keep-track-of-an-iobservable

Rx 专家有什么想法吗?

最佳答案

没有内置任何东西,但您可以实现 CountingSubject<T> :

public class CountingSubject<T>
{
private ISubject<T> internalSubject;
private int subscriberCount;

public CountingSubject()
: this(new Subject<T>())
{
}

public CountingSubject(ISubject<T> internalSubject)
{
this.internalSubject = internalSubject;
}

public IDisposable Subscribe(IObserver<T> observer)
{
Interlocked.Increment(ref subscriberCount);

return new CompositeDisposable(
this.internalSubject.Subscribe(observer),
Disposable.Create(() => Interlocked.Decrement(ref subscriberCount))
});
}

public int SubscriberCount
{
get { return subscriberCount; }
}
}

关于c# - 我如何确定 IObservable<T> 上有多少/明确的订阅者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4252632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com