20

誰かが AutoResetEvent.Reset() メソッドのユースケースを紹介できますか? いつ、なぜこの方法を使用したいのですか? WaitOne と Set は理解できますが、これは私にはよくわかりません。

4

6 に答える 6

10

はい、AutoResetEventイベントを待機しているスレッドが通知されるたびに、その状態が自動的にリセットされます。ただし、特定のイベントが無効になり、最初に設定されてからスレッドが待機していない可能性がありますAutoResetEvent。そのシナリオでは、Resetメソッドが役立ちます

于 2011-05-03T14:38:23.370 に答える
1

EventWaitHandleから継承されたようです。おそらく、そのクラスから継承する ManualResetEvent の方が便利でしょうか?

于 2011-05-03T14:31:53.527 に答える
1

このメソッドは基本クラスから継承され、を「ブロックされた」状態EventWaitHandleに (再) 設定するために使用されます。AutoResetEvent

はシグナルされるとすぐに自動的にその状態になるためAutoResetEvent、通常、このメソッドがコードで使用されることはありませんが、それから派生する他のクラスEventWaitHandleでははるかに便利です!

于 2011-05-03T14:33:13.873 に答える
1

AutoResetEvent プロデューサーがイベントをクリアしたい場合は、Reset() を使用します。このようにして、イベントが現在通知されているかどうかを知らなくても、イベントを安全に「リセット」できます。プロデューサが WaitOne を使用してそれ自身のイベントを「リセット」した場合、デッドロックのリスクがあります (つまり、イベントが通知されず、プロデューサ スレッドがブロックされているため、戻らない)。

于 2011-05-03T14:35:35.783 に答える
0

スレッドがシグナル状態になると AutoResetEvent が自身をリセットするため、Reset() を使用する場合は ManualResetEvent を使用する必要があります。

于 2011-05-03T14:32:30.010 に答える