RX:当一个主题的RefCount达到0时执行处理
本文关键字:RefCount 达到 0时 处理 执行 一个 RX | 更新日期: 2023-09-27 18:17:50
我有一个简单的类如下:
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());
}
}
以上只是实际类的摘录,它有其他代码调用Subject.OnNext()
来通知更改。
我想知道的是,是否有一种方法可以知道发布主题的RefCount
何时达到0,以便我可以处置主题并执行一些其他清理操作。
使用RefCount(),当订阅数达到0时,序列完成。所以你可以用Finally来听序列完成。例如:
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());
}
}