我有一个简单的类如下:
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());
}
}
关于c# - RX : Perform disposal when RefCount of a Subject reaches 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40601183/