大まかなコンテキスト: メッセージング システム、Communicator
メッセージの送信 ( フィールド の増加_messagesInTransmission
)、別のスレッドで ACK または NAK の受信 ( の減少_messagesInTransmission
)。
Communicator のインスタンスが破棄された_messagesInTransmission
場合、次回ゼロになるとすぐに、基になるトランスポート インスタンスを停止する必要があります。
これをスレッドセーフな方法で実装するにはどうすればよいですか?
public void Dispose()
{
_state = State.Stopping; // immediately change state in order to prevent additional messages to be sent
// TODO: wait for _messagesInTransmission to become zero
}
.NET Framework はこのタスクをサポートしてくれますか?
簡単な解決策は while(_mIT != 0) ループと Thread.Sleep ですが、可能であればもっと魅力的なコードを書きたいと思っています。