gpt4 book ai didi

c# - RX : Perform disposal when RefCount of a Subject reaches 0

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

我有一个简单的类如下:

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/

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