다음을 통해 공유


ManualResetEvent 및 ManualResetEventSlim

System.Threading.ManualResetEvent 클래스는 신호를 받은 후 수동으로 다시 설정되어야 하는 로컬 대기 핸들 이벤트를 나타냅니다. 이 클래스는 기본 클래스인 System.Threading.EventWaitHandle의 특수한 경우를 나타냅니다. 수동 다시 설정 이벤트의 사용 및 기능에 대한 내용은 EventWaitHandle 개념 설명서를 참조하십시오.

ManualResetEvent 개체는 EventWaitHandle.Reset 메서드가 호출되기 전까지 신호를 받은 상태로 유지됩니다. 개수에 관계없이 모든 대기 스레드 또는 신호를 받은 후 이벤트를 기다리는 스레드는 개체 상태가 신호를 받은 상태인 동안 해제될 수 있습니다. ManualResetEvent는 Win32 CreateEvent 호출에 해당하며 bManualReset 인수를 true로 지정합니다.

.NET Framework 버전 4에서는 대기 시간이 매우 짧을 것으로 예상되고 이벤트가 프로세스 경계를 넘어서지 않는 경우 System.Threading.ManualResetEventSlim 클래스를 사용하여 성능을 향상시킬 수 있습니다. ManualResetEventSlim에서는 이벤트에 신호가 전달되기를 기다리는 짧은 시간 동안 고속 회전을 사용합니다. 대기 시간이 짧으면 대기 핸들을 사용하여 기다리는 것보다 회전을 유지하는 쪽이 비용을 훨씬 더 절감할 수 있습니다. 그러나 일정 시간 내에 이벤트에 신호가 전달되지 않으면 ManualResetEventSlim이 일반적인 이벤트 핸들 대기 상태로 전환됩니다.

참고 항목

개념

대기 핸들

AutoResetEvent

세마포 및 SemaphoreSlim

기타 리소스

관리되는 스레딩

스레딩 개체 및 기능

SpinWait