Monitor.Pulse(Object) Methode

Definitie

Hiermee wordt een thread in de wachtrij van een wijziging in de status van het vergrendelde object op de hoogte gesteld.

public:
 static void Pulse(System::Object ^ obj);
public static void Pulse(object obj);
static member Pulse : obj -> unit
Public Shared Sub Pulse (obj As Object)

Parameters

obj
Object

Het object waarop een thread wacht.

Uitzonderingen

De obj parameter is null.

De aanroepende thread is niet de eigenaar van de vergrendeling voor het opgegeven object.

Opmerkingen

Alleen de huidige eigenaar van de vergrendeling kan een wachtend object signalen met behulp van Pulse.

De thread die momenteel eigenaar is van de vergrendeling van het opgegeven object roept deze methode aan om de volgende thread in de regel voor de vergrendeling aan te geven. Na ontvangst van de puls wordt de wachtthread verplaatst naar de wachtrij die gereed is. Wanneer de thread die wordt aangeroepen Pulse de vergrendeling loslaat, verkrijgt de volgende thread in de wachtrij gereed (wat niet noodzakelijkerwijs de thread is die is gepulseerd) de vergrendeling.

Important

De Monitor klasse behoudt de status niet die aangeeft dat de Pulse methode is aangeroepen. Dus als u aanroept Pulse wanneer er geen threads wachten, wordt de volgende thread die blokken aanroept Wait , alsof Pulse deze nog nooit is aangeroepen. Als twee threads worden gebruikt Pulse en Wait gebruikt, kan dit leiden tot een impasse. Vergelijk dit met het gedrag van de AutoResetEvent klasse: Als u een AutoResetEvent signaal aanroept door de methode aan Set te roepen en er geen threads wachten, blijft de AutoResetEvent status gesignaleerd totdat een threadaanroep WaitOne, WaitAnyof WaitAll. De AutoResetEvent releases die thread en keert terug naar de niet-ondertekende status.

Houd er rekening mee dat een gesynchroniseerd object verschillende verwijzingen bevat, waaronder een verwijzing naar de thread die momenteel de vergrendeling bevat, een verwijzing naar de gereede wachtrij, die de threads bevat die gereed zijn om de vergrendeling te verkrijgen en een verwijzing naar de wachtwachtrij, die de threads bevat die wachten op melding van een wijziging in de status van het object.

De Pulse, PulseAllen Wait methoden moeten worden aangeroepen vanuit een gesynchroniseerd codeblok.

Als u meerdere threads wilt signaleren, gebruikt u de PulseAll methode.

Van toepassing op

Zie ook