다음을 통해 공유


대기 핸들

업데이트: 2007년 11월

WaitHandle 클래스는 Win32 동기화 핸들을 캡슐화하며 여러 대기 작업을 허용하는 런타임에서 모든 동기화 개체를 나타내는 데 사용됩니다. 다른 동기화 개체와 대기 핸들을 비교하려면 동기화 기본 형식 개요를 참조하십시오.

WaitHandle 클래스는 추상 클래스입니다. 여기에는 파생 클래스 이외에도 다중 이벤트에서 대기할 수 있게 하는 정적 메서드가 많이 있습니다. WaitHandle에서 파생된 클래스는 다음을 포함합니다.

WaitHandle 클래스는 MarshalByRefObject에서 파생되므로 이러한 클래스를 사용하여 응용 프로그램 도메인 경계에 걸쳐 스레드 작업을 동기화할 수 있습니다.

스레드는 인스턴스 메서드 WaitOne을 호출하여 개별 대기 핸들에서 차단될 수 있습니다. 또한 WaitHandle 클래스는 지정된 모든 대기 핸들 집합이 신호를 받을 때까지(WaitAll) 또는 지정된 대기 핸들 집합 중 하나가 신호를 받을 때까지(WaitAny) 대기하도록 정적 메서드를 오버로드합니다. 이러한 메서드의 오버로드는 대기를 포기하는 시간 제한 간격과 대기에 들어가기 전에 동기화 컨텍스트를 종료하는 기회를 제공하여 다른 스레드가 해당 동기화 컨텍스트를 사용할 수 있도록 합니다.

.NET Framework 버전 2.0에서는 대기 핸들에도 원자 연산으로 정적 SignalAndWait 메서드가 있어서 스레드가 하나의 대기 핸들 신호를 보내고 즉시 다른 대기 핸들에서 대기할 수 있습니다.

WaitHandle의 파생 클래스는 스레드 선호도가 다릅니다. 이벤트 대기 핸들(EventWaitHandle, AutoResetEventManualResetEvent)과 세마포에는 스레드 선호도가 없습니다. 모든 스레드는 이벤트 대기 핸들이나 세마포의 신호를 보낼 수 있습니다. 반면 뮤텍스에는 스레드 선호도가 있습니다. 뮤텍스를 소유하는 스레드는 스레드 선호도를 해제해야 합니다. 스레드가 소유하지 않은 뮤텍스에서 ReleaseMutex 메서드를 호출하면 예외가 throw됩니다.

참고 항목

개념

뮤텍스

세마포

기타 리소스

관리되는 스레딩

스레딩 개체 및 기능

EventWaitHandle, AutoResetEvent 및 ManualResetEvent