web-dev-qa-db-ja.com

Javaの待機と通知に相当するC#?

ロックを使用してc#でオブジェクトをロックできることは承知していますが、ロックをあきらめて、他の何かが通知するのを待つことはできますJava with wait and notify?

同期とロックJavaとc#はそれぞれ同義語のようです。

52
Omar Kooheji

同等の機能(通常のロックを含む)は Monitor クラスにあります。

foo.notify() => Monitor.Pulse(foo)
foo.notifyAll() => Monitor.PulseAll(foo)
foo.wait() =>  Monitor.Wait(foo)

C#のlockステートメントは、適切なtry/finallyブロックを指定してMonitor.EnterおよびMonitor.Exitを呼び出すのと同じです。

詳細は my threading tutorial または Joe Albahari's one を参照してください。

91
Jon Skeet

待機ハンドルが役立つかもしれません。 this が役立つかどうかを確認します。

1
EBGreen