WaitHandle.WaitAny メソッド (WaitHandle )
指定した配列内のいずれかの要素がシグナルを受信するまで待機します。
Overloads Public Shared Function WaitAny( _
ByVal waitHandles() As WaitHandle _) As Integer
[C#]
public static int WaitAny(WaitHandle[] waitHandles);
[C++]
public: static int WaitAny(WaitHandle* waitHandles[]);
[JScript]
public static function WaitAny(
waitHandles : WaitHandle[]) : int;
パラメータ
- waitHandles
現在のインスタンスが待機する対象のオブジェクトを格納している WaitHandle 配列。
戻り値
待機を実行するオブジェクトの配列インデックス。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | waitHandles パラメータが null 参照 (Visual Basic では Nothing) であるか、 waitHandles 配列内の 1 つ以上のオブジェクトが null 参照 (Nothing) です。 |
NotSupportedException | waitHandles 内のオブジェクト数がシステムによって許可されている数を超えています。 |
ApplicationException | waitHandles が要素のない配列です。 |
解説
このメソッドは、いずれかのハンドルがシグナルを受信すると待機を終了します。複数のオブジェクトが呼び出し中にシグナル状態になった場合、戻り値はすべてのシグナル状態オブジェクトのうち、最小インデックス値を持つシグナル状態オブジェクトの配列インデックスになります。一部の実装では、64 個を超えるハンドルが渡されると、 NotSupportedException がスローされます。配列に重複が含まれていると、呼び出しは失敗します。
メモ スレッドが Mutex を明示的に解放せず終了するか中止し、 Mutex が別のスレッドの WaitAny に含まれている場合、 WaitAny で返されるインデックスは、正しい値に 128 を足した値になります。これを防止するには、このメソッドを使用する前にインデックスを確認してください。インデックスの確認には、C# コードの場合は
if (index >= 128) index -= 128;
などを使用し、Visual Basic コードの場合はIf index >= 128 Then index -= 128
などを使用します。
このオーバーロードを呼び出すことは、2 番目のパラメータに -1 または Timeout.Infinite を指定し、3 番目のパラメータに false を指定して WaitAny(WaitHandle[],Int32,Boolean) オーバーロードを呼び出すことと同じです。
必要条件
プラットフォーム: 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
参照
WaitHandle クラス | WaitHandle メンバ | System.Threading 名前空間 | WaitHandle.WaitAny オーバーロードの一覧