Поделиться через


Классы 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 обращается к стандартному дескриптору ожидания события.

См. также

Основные понятия

Дескрипторы ожидания

AutoResetEvent

Классы Semaphore и SemaphoreSlim

Другие ресурсы

Управляемая поточность

Объекты и функциональные возможности работы с потоками

SpinWait