C# 接收:当对象的参考计数达到0时执行处理
我有一个简单的类,如下所示:C# 接收:当对象的参考计数达到0时执行处理,c#,.net,system.reactive,reactive-programming,C#,.net,System.reactive,Reactive Programming,我有一个简单的类,如下所示: internal class DataProvider : IDataProvider { private readonly Subject<string> _dataChangeSubject = new System.Reactive.Subjects.Subject<string>(); private IObservable<string> _dataChangeObservable; publi
internal class DataProvider : IDataProvider
{
private readonly Subject<string> _dataChangeSubject = new System.Reactive.Subjects.Subject<string>();
private IObservable<string> _dataChangeObservable;
public IObservable ObserveDataChange()
{
return _dataChangeObservable ?? (_dataChangeObservable = _dataChangeSubject.Publish().RefCount());
}
}
内部类数据提供程序:IDataProvider
{
private readonly Subject _datachangepubject=new System.Reactive.Subjects.Subject();
私有IObservable _dataChangeObservable;
公共IOobservedTachChange()
{
返回_dataChangeObservable??(_dataChangeObservable=_dataChangeSubject.Publish().RefCount());
}
}
上面只是实际类的一个摘录,它还有其他代码要调用Subject.OnNext()
来通知更改
我想知道的是,是否有办法知道已发布主题的RefCount
何时达到0,以便我可以处理该主题并执行一些其他清理操作。使用RefCount(),当订阅达到0时,序列完成。所以你可以用它来听序列完成。例如:
internal class DataProvider
{
private readonly Subject<string> _dataChangeSubject = new System.Reactive.Subjects.Subject<string>();
private IObservable<string> _dataChangeObservable;
public IObservable<string> ObserveDataChange()
{
return _dataChangeObservable ??
(_dataChangeObservable = _dataChangeSubject.Finally(() => { /* Do cleanup here */ }).Publish().RefCount());
}
}
内部类数据提供程序
{
private readonly Subject _datachangepubject=new System.Reactive.Subjects.Subject();
私有IObservable _dataChangeObservable;
公共IOobservedTachChange()
{
返回_dataChangeObservable??
(_dataChangeObservable=_dataChangeSubject.Finally(()=>{/*DoCleanup here*/}).Publish().RefCount());
}
}
dataChangeSubject.Publish().RefCount()返回的是什么?从方法名称来看,它应该返回整数,但从您的用法来看,它似乎返回IObservable
。是的,IConnectableObservable.RefCount()
返回IObservable
。您能介绍一个事件RefCountChanged
并订阅它吗?我应该在哪里介绍这个事件RefCount()
由被动扩展提供,我不知道内部订阅ref count何时更改,这正是我需要了解的。