我应该在Reactive Extensions(Rx)Subject 上调用Dispose

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

public class MyClass { private Subject subject; public IObservable WhenSomethingHappened { get { return this.subject.AsObservable(); } } private void OnSomethingHappened(string something) { this.subject.OnNext(something); } } 

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

我问的原因是IDisposable模式有点像疾病,如果有一件事实现它,使用它的一切都必须实现它。

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