Прочитать на английском

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


Monitor.PulseAll(Object) Метод

Определение

Уведомляет все ожидающие потоки об изменении состояния объекта.

public static void PulseAll (object obj);

Параметры

obj
Object

Объект, посылающий импульс.

Исключения

Параметр obj имеет значение null.

Вызывающий поток не владеет блокировкой для указанного объекта.

Комментарии

Поток, которому в настоящее время принадлежит блокировка указанного объекта, вызывает этот метод, чтобы сигнализировать всем потокам, ожидающим получения блокировки объекта. После отправки сигнала потоки ожидания перемещаются в готовую очередь. Когда поток, вызывающий PulseAll блокировку, освобождает блокировку, следующий поток в готовой очереди получает блокировку.

Обратите внимание, что синхронизированный объект содержит несколько ссылок, включая ссылку на поток, который в настоящее время содержит блокировку, ссылку на готовую очередь, содержащую потоки, готовые к получению блокировки, и ссылку на очередь ожидания, содержащую потоки, ожидающие уведомления об изменении состояния объекта.

Методы Pulseи , PulseAllа Wait также методы должны вызываться из синхронизированного блока кода.

Примечания для Pulse метода объясняют, что происходит, если Pulse потоки не ожидают.

Чтобы сигнализировать об одном потоке Pulse , используйте метод.

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

См. также раздел