我正在使用 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/