Monitor.PulseAll メソッド
オブジェクトの状態が変更されたことを、待機中のすべてのスレッドに通知します。
Public Shared Sub PulseAll( _
ByVal obj As Object _)
[C#]
public static void PulseAll(objectobj);
[C++]
public: static void PulseAll(Object* obj);
[JScript]
public static function PulseAll(
obj : Object);
パラメータ
- obj
パルスを送るオブジェクト。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | obj パラメータが null 参照 (Visual Basic では Nothing) です。 |
SynchronizationLockException | 呼び出し元のスレッドは、指定したオブジェクトのロックを所有していません。 |
解説
指定したオブジェクトのロックを現在所有しているスレッドは、このメソッドを呼び出して、オブジェクトのロックを取得するために待機しているすべてのスレッドに通知します。シグナルが送信されると、待機中のスレッドが実行待ちキューに移動します。 PulseAll を呼び出したスレッドがロックを解放すると、実行待ちキュー内の次のスレッドがロックを取得します。
同期されたオブジェクトは、現在ロックを保持しているスレッドへの参照、ロックを取得する準備ができているスレッドを格納している実行待ちキューへの参照、オブジェクトの状態の変更通知を待機しているスレッドを格納している待機キューへの参照など、複数の参照を保持しています。 Pulse 、 PulseAll 、 Wait の各メソッドは、同期されたコードのブロック内から呼び出される必要があります。 Wait(Object, Int32) の解説では、 Pulse が Wait の前に呼び出されると発生する問題について説明しています。
シングル スレッドに通知するには、 Pulse メソッドを使用します。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, Common Language Infrastructure (CLI) Standard
参照
Monitor クラス | Monitor メンバ | System.Threading 名前空間 | Thread | スレッド処理 | Monitor