我的项目中有很多代码,例如通过像这样使用Reactive 扩展来点击和静音:
IDisposable dsp = null;
dsp = TargetObservable.Subscribe((incomingContent) =>
{
if (incomingContent == "something")
{
myList.Add(incomingContent);
dsp.Dispose();
}
});
首先,我担心线程安全,因为我的 Observable 很忙,一路推送一堆内容,但是后来,我被告知我应该结合ObserveOn(thread)
来保证线程安全,我完全同意,所以让我们忘记线程安全的东西。
在这里我想知道:
- 我应该如何或何时调用 Dispose 以获取 observable。
- 什么是满足Hit 和 mute的正确方法,结合一些完整的扩展方法
Take(count)
,如“TakeWhile(predict)”? - 如果
OnComplete()
调用,Dispose()
将在内部调用,对吗?那么 Observer 和 Observable 之间的引用关系就会中断(因为我的 observable 是一个长寿命的静态实例,引用会导致内存泄漏)。