Классы ManualResetEvent и ManualResetEventSlim
Класс System.Threading.ManualResetEvent представляет событие локального дескриптора ожидания, которое должно быть сброшено вручную после получения сигнала. Этот класс представляет специальное использование базового класса System.Threading.EventWaitHandle. Вопросы, связанные с использованием и функциональными возможностями ручного сброса событий см. в основной документации EventWaitHandle.
Объект ManualResetEvent остается оповещаемым до вызова метода EventWaitHandle.Reset. Во время оповещения о состоянии объекта можно освободить любое число ожидающих потоков, или потоков, ожидающих событие после оповещения. Объект ManualResetEvent соответствует вызову Win32 CreateEvent, указывающему значение true в качестве аргумента параметра bManualReset.
В .NET Framework 4 можно использовать класс System.Threading.ManualResetEventSlim для повышения производительности, когда периоды ожидания должны быть короткими, а событие не выходит за рамки процесса. ManualResetEventSlim использует цикличную работу в режиме занятости в течение короткого промежутка времени, пока ожидает сигнала от события. Если периоды ожидания короткие, цикличная работа может быть намного дешевле ожидания с использованием дескрипторов ожидания. Однако, если событие не сигнализирует после определенного промежутка времени, ManualResetEventSlim обращается к стандартному дескриптору ожидания события.
См. также
Основные понятия
Классы Semaphore и SemaphoreSlim