Condividi tramite


ManualResetEvent e ManualResetEventSlim

La classe System.Threading.ManualResetEvent rappresenta un evento di handle di attesa locale che deve essere reimpostato manualmente dopo che è stato segnalato. Questa classe rappresenta un caso speciale della relativa classe base, System.Threading.EventWaitHandle. Per informazioni sull'utilizzo e sulle funzionalità degli eventi di reimpostazione manuale, vedere la documentazione relativa a EventWaitHandle.

Un oggetto ManualResetEvent rimane segnalato finché non viene chiamato il relativo metodo EventWaitHandle.Reset. È possibile rilasciare qualsiasi numero di thread in attesa, o thread che attendono l'evento dopo che è stato segnalato, mentre lo stato dell'oggetto è segnalato. ManualResetEvent corrisponde a una chiamata CreateEvent Win32, in cui si specifica true per l'argomento bManualReset.

In .NET Framework versione 4, è possibile utilizzare la classe System.Threading.ManualResetEventSlim per ottenere prestazioni migliori quando si prevede che i tempi di attesa siano molto brevi e quando l'evento non supera un limite di processo.ManualResetEventSlim utilizza spin intenso per un breve periodo di tempo mentre attende la segnalazione dell'evento. Quando i tempi di attesa sono brevi, lo spin può risultare molto meno oneroso dell'attesa tramite handle di attesa. Tuttavia, se l'evento non viene segnalato entro un certo periodo di tempo, ManualResetEventSlim ricorre a una normale attesa dell'handle dell'evento.

Vedere anche

Concetti

Handle di attesa

AutoResetEvent

Semaphore e SemaphoreSlim

Altre risorse

Threading gestito

Oggetti e funzionalità del threading

SpinWait