Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Monitor.Pulse (Object)

 

Publicado: octubre de 2016

Notifica un cambio de estado del objeto bloqueado al subproceso que se encuentra en la cola de espera.

Espacio de nombres:   System.Threading
Ensamblado:  mscorlib (en mscorlib.dll)

public static void Pulse(
	object obj
)

Parámetros

obj
Type: System.Object

Objeto que está esperando un subproceso.

Exception Condition
ArgumentNullException

El parámetro obj es null.

SynchronizationLockException

El subproceso de llamada no posee el bloqueo para el objeto especificado.

Sólo el propietario actual del bloqueo puede señalar un objeto en espera utilizando Pulse.

El subproceso que actualmente posee el bloqueo en el objeto especificado invoca a este método para notificar el siguiente subproceso en línea para adquirir el bloqueo. Cuando recibe el pulso, el subproceso en espera se mueve a la cola de subprocesos listos. Cuando el subproceso que invocó Pulse libera el bloqueo, el siguiente subproceso de la cola de subprocesos listos (que no es necesariamente el subproceso que ha recibido el pulso) adquiere el bloqueo.

System_CAPS_importantImportante

La Monitor clase mantienen el estado que indica que el Pulse ha llamado al método. Por lo tanto, si se llama a Pulse cuando no hay ningún subproceso en espera, el siguiente subproceso que llama Wait bloques como si Pulse nunca se hubiera llamado. Si usan dos subprocesos Pulse y Wait para interactuar, esto podría provocar un interbloqueo. Compare esto con el comportamiento de la AutoResetEvent (clase): si indica un AutoResetEvent llamando a su Set método y no hay ningún subproceso en espera, el AutoResetEvent permanece en estado señalado hasta que un subproceso llama a WaitOne, WaitAny, o WaitAll. El AutoResetEvent libera ese subproceso y vuelve al estado no señalado.

Tenga en cuenta que un objeto sincronizado contiene varias referencias, incluida una referencia al subproceso que actualmente posee el bloqueo, una referencia a la cola de subprocesos listos, que contiene los subprocesos que están listos para obtener el bloqueo, y una referencia a la cola de espera, que contiene los subprocesos que están esperando la notificación de un cambio en el estado del objeto.

El Pulse, PulseAll, y Wait métodos deben invocarse desde dentro de un bloque de código sincronizado.

Para marcar varios subprocesos, utilice el PulseAll método.

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: