System.Threading.WaitHandle.WaitAny Method

Waits for any of the elements in the specified array to receive a signal, using a TimeSpan to specify the time interval.

Syntax

[System.Runtime.ConstrainedExecution.ReliabilityContract(System.Runtime.ConstrainedExecution.Consistency.WillNotCorruptState, System.Runtime.ConstrainedExecution.Cer.MayFail)]
public static int WaitAny (WaitHandle[] waitHandles, TimeSpan timeout)

Parameters

waitHandles
A WaitHandle array containing the objects for which the current instance will wait.
timeout
A TimeSpan that represents the number of milliseconds to wait, or a TimeSpan that represents -1 milliseconds to wait indefinitely.

Returns

The array index of the object that satisfied the wait, or WaitHandle.WaitTimeout if no object satisfied the wait and a time interval equivalent to timeout has passed.

Remarks

If timeout is zero, the method does not block. It tests the state of the wait handles and returns immediately.

The erload:System.Threading.WaitHandle.WaitAny method throws an System.Threading.AbandonedMutexException only when the wait completes because of an abandoned mutex. If waitHandles contains a released mutex with a lower index number than the abandoned mutex, the erload:System.Threading.WaitHandle.WaitAny method completes normally and the exception is not thrown.

This method returns when the wait terminates, either when any of the handles are signaled or when a time-out occurs. If more than one object becomes signaled during the call, the return value is the array index of the signaled object with the smallest index value of all the signaled objects. On some implementations, if more that 64 handles are passed, a NotSupportedException is thrown.

The maximum value for timeout is int.MaxValue.

Calling this method overload is the same as calling the WaitHandle.WaitAny(WaitHandle[], TimeSpan, bool) overload and specifying false for exitContext.

Requirements

Namespace: System.Threading
Assembly: mscorlib (in mscorlib.dll)
Assembly Versions: 2.0.0.0, 4.0.0.0