私は共通の問題に違いないものに出くわしました。いくつかの異なるクラスによってサブスクライブされる可能性のあるイベントがある場合、これらのクラスのいずれかによって例外がスローされると、コールバック チェーンが強制終了されます。コールバックが実行される順序がアプリオリにわからないため、これにより、一部のクラスでは予測できない状態変化が発生し、他のクラスでは発生しない可能性があります。
聖書(C# 経由の CLR、私は C# 2.0 を使用しています)には、MulticastDelegate.GetInvocationList
これを回避するための使用に関する短い段落がありますが、それ以上のものはありません。だから私の質問は、これに対処する最善の方法は何ですか? MulticastDelegate.GetInvocationList
イベントがあるたびに使用する必要がありますか?? それとも、ある種のロールバック メカニズムでデリゲート チェーンの一部として呼び出される可能性があるすべてのメソッドを囲む必要がありますか? C# で非常に使いやすい単純なイベント/デリゲート モデルと比較して、これらすべてのオプションが非常に複雑なのはなぜですか? そして、破損した状態にならずに簡単な方法を使用するにはどうすればよいですか?
ありがとう!