0

大まかなコンテキスト: メッセージング システム、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 ですが、可能であればもっと魅力的なコードを書きたいと思っています。

4

3 に答える 3