c# - 我应该在 Reactive Extensions (Rx) Subject<T> 上调用 Dispose

标签 c# .net system.reactive

我正在使用 Reactive Extensions (Rx) Subject 作为 C# 事件的直接替代品,如下所示:

public class MyClass
{
    private Subject<string> subject;

    public IObservable<string> WhenSomethingHappened
    {
        get { return this.subject.AsObservable(); }
    }

    private void OnSomethingHappened(string something)
    {
        this.subject.OnNext(something);
    }
}

请注意,我从不对我的主题调用 OnCompleted。 MyClass 是否应该实现 IDisposable 并调用 this.subject.Dispose?这意味着任何使用 Subject 的实现都应该实现 IDisposable。

我问的原因是 IDisposable 模式有点像一种疾病,如果一个东西实现了它,那么所有使用它的东西也必须实现它。

最佳答案

不,你真的不需要这样做。当担心内存使用和生命周期时,请考虑处理订阅,而不是主题。

关于c# - 我应该在 Reactive Extensions (Rx) Subject<T> 上调用 Dispose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24323087/

相关文章:

c# - FileSystemWatcher:忽略自己进程所做的更改

c# - 如何在 C# 中动态调用构造函数?

.net - 无法更改 ServiceDefinition 文件

angular - 我们是否需要取消订阅已完成/出错的可观察对象?

c# - 使用 C# 7.0 的新 TaskLike 异步支持是否可以编写 IObservable<T> 生成器

c# - 将 EditorTemplate 添加到 Kendo 网格

c# - 如何在 C# 中从派生类型获取泛型类型的泛型参数类型

c# - 在类层次结构中传播属性值

c# - 使用 ValidateCredentials 重复失败的登录尝试是否会导致用户被锁定?

mvvm - Xamarin表格: Is Reactive Extensions (Rx) a framework that replaces MVVM pattern?