Messenger ライブラリを作成し、それをスレッド セーフにしたので、スレッド間で安心して共有できます。私は主に Monitor クラスを使用してこれを実現します。
ソケットなどをシャットダウンする前にトランザクションが発生するのを待機しようとするため、完了するまでに時間がかかる可能性のあるログアウト ルーチンがあります。これは非同期で、Begin/End メソッドがありますが、この例では同期のふりをします。
2 つのスレッドが次々に Logout を呼び出すとどうなるでしょうか? 2番目のスレッドで何をすべきですか?
現在、最初のログアウトが完了するまで (Monitor.Wait を使用して最初のスレッドからの Pulse を待機して) ブロックし、AlreadyLoggedOutException をスローします。
Logout が呼び出されたが、ログアウトが既に行われている場合に LogoutInProgress 例外をスローすることも試しました。
どちらも一長一短あるようですが、他の方が良いと思うものを知りたいです。