EventWaitHandle, AutoResetEvent, CountdownEvent и ManualResetEvent
Дескрипторы ожидания событий позволяют потокам синхронизировать действия, обмениваясь сигналами и ожидая сигналов друг от друга. Такие события синхронизации основаны на дескрипторах ожидания Win32. Их можно разделить на два типа: события, сбрасываемые автоматически в момент передачи сигнала и сбрасываемые вручную.
Дескрипторы ожидания событий полезны во многих из сценариев синхронизации, где используется класс Monitor. Использовать дескрипторы ожидания событий часто проще, чем методы Monitor.Wait и Monitor.Pulse, и они дают более широкие возможности управления сигналами. Именованные дескрипторы ожидания событий также можно использовать для синхронизации действий между различными доменами приложений и процессами, в то время как мониторы являются локальными для домена приложения.
В этом подразделе
EventWaitHandle
Класс EventWaitHandle может представлять локальные или именованные системные события с автоматическим или ручным сбросом.AutoResetEvent
Класс AutoResetEvent является производным от класса EventWaitHandle и представляет локальное событие с автоматическим сбросом.Классы ManualResetEvent и ManualResetEventSlim
Класс ManualResetEvent является производным от класса EventWaitHandle и представляет локальное событие, которое необходимо сбрасывать вручную. Класс ManualResetEventSlim является упрощенной и более быстрой версией, которую можно использовать для событий в одном и том же процессе.CountdownEvent
Класс CountdownEvent предоставляет упрощенный способ реализации шаблонов параллельного выполнения разветвлений и соединений в коде, использующем дескрипторы ожидания.
Связанные подразделы
- Дескрипторы ожидания
Класс WaitHandle является базовым для классов EventWaitHandle, Semaphore и Mutex. Он содержит статические методы, такие как SignalAndWait и WaitAll, которые полезны в работе с дескрипторами ожидания всех типов.