정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

WaitHandle.WaitAll 메서드 (WaitHandle[], Int32)

2013-12-13

Int32 값을 사용하여 시간 간격을 지정하면서 지정된 배열의 모든 요소가 신호를 받기를 기다립니다.

Namespace:  System.Threading
어셈블리:  mscorlib(mscorlib.dll)

public static bool WaitAll(
	WaitHandle[] waitHandles,
	int millisecondsTimeout
)

매개 변수

waitHandles
형식: System.Threading.WaitHandle []
현재 인스턴스에서 기다릴 개체가 포함된 배열입니다. 이 배열에는 같은 개체에 대한 여러 개의 참조가 포함될 수 없습니다.
millisecondsTimeout
형식: System.Int32
대기할 시간(밀리초)이거나, 무기한 대기할 경우 Timeout.Infinite(-1)입니다.

반환 값

형식: System.Boolean
waitHandles에 있는 모든 요소가 신호를 받으면 true 이고, 그렇지 않으면 false입니다.

예외조건
ArgumentNullException

waitHandles 매개 변수가 null인 경우 -또는-

waitHandles 배열의 개체 중 하나 이상이 null인 경우

ArgumentException

waitHandles 배열에 중복 요소가 포함되어 있는 경우

-또는-

waitHandles가 요소가 없는 배열인 경우

NotSupportedException

waitHandles에 포함된 개체의 수가 시스템에서 허용하는 것보다 많은 경우

ArgumentOutOfRangeException

millisecondsTimeout이 무기한 시간 제한을 나타내는 -1 이외의 음수인 경우

millisecondsTimeout이 0이면 메서드가 차단하지 않습니다. 대신 대기 핸들의 상태를 테스트한 다음 즉시 반환합니다.

WaitAll 메서드는 모든 핸들이 신호를 받거나 제한 시간을 초과하여 대기가 종료될 때 값을 반환합니다. 일부 구현에서는 64개 이상의 핸들을 전달하면 NotSupportedException이 발생합니다. 배열에 중복된 요소가 있으면 ArgumentException이 발생하여 호출에 실패합니다.

단일 스레드 아파트에서 이 메서드를 호출하고, waitHandles에 둘 이상의 대기 핸들이 있는 경우 메서드가 교착 상태가 됩니다.

버전 메모

Windows Phone

  Windows Phone에서는 WaitAll이 있지만 지원되지는 않습니다.

다음 예제에서는 이 WaitAll 메서드 오버로드를 사용하여 여러 스레드의 완료를 기다리는 동안 진행률을 보고하는 방법을 보여 줍니다. WaitAll 메서드의 제한 시간이 초과될 때마다 대기 중이었던 스레드가 사용자 인터페이스 스레드에 진행률을 보고합니다.

이 코드는 WaitHandle 클래스에 대해 제공되는 보다 큰 예제의 일부입니다.


// Wait for ALL subtasks to complete, and show progress every 1/4 second if
// the WaitAll times out.

while (!WaitHandle.WaitAll(waitHandles, 250))
{
   // If the WaitAll timed out, show progress.
   worker.ReportProgress(3);
}


Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시: