私のプロジェクトには、次のようにReactive 拡張機能を使用して、ヒットとミュートのようなコードがたくさんあります。
IDisposable dsp = null;
dsp = TargetObservable.Subscribe((incomingContent) =>
{
if (incomingContent == "something")
{
myList.Add(incomingContent);
dsp.Dispose();
}
});
まず第一に、Observable は非常にビジーであり、大量のコンテンツをプッシュしているため、スレッド セーフが懸念されますが、後で、ObserveOn(thread)
スレッド セーフを保証するために と組み合わせる必要があると言われました。完全に同意するので、忘れましょう。スレッドセーフなこと。
ここで知りたいのは:
- オブザーバブルの Dispose を呼び出す方法またはタイミング。
- Hit と muteを満たす正しい方法は何
Take(count)
ですか? OnComplete()
呼び出された場合、Dispose()
内部で呼び出されますよね?次に、オブザーバーとオブザーバブルの間の参照関係が壊れます(私のオブザーバブルは長寿命の静的インスタンスであるため、参照によりメモリリークが発生します)。