In .NET Framework versione 2.0, la classe ManualResetEvent deriva dalla nuova classe EventWaitHandle. Dal punto di vista funzionale, una classe ManualResetEvent è equivalente a una classe EventWaitHandle creata con EventResetMode.ManualReset.
Nota |
|---|
| A differenza della classe ManualResetEvent, la classe EventWaitHandle fornisce accesso agli eventi di sincronizzazione di sistema denominati. |
L'oggetto ManualResetEvent consente ai thread di comunicare tra loro tramite segnalazioni. Di solito questa comunicazione riguarda un'attività che deve essere completata da un thread perché gli altri thread possano procedere.
Quando un thread avvia un'attività che deve essere completata prima che gli altri thread possano procedere, viene chiamato il metodo Reset per impostare lo stato dell'evento ManualResetEvent su non segnalato. Lo si può considerare come un thread di controllo di ManualResetEvent. I thread che chiamano il metodo WaitOne nell'evento ManualResetEvent si interromperanno in attesa del segnale. Quando il thread di controllo completa l'attività, chiama il metodo Set per segnalare che i thread in attesa possono procedere . Tutti i thread in attesa vengono rilasciati.
Dopo essere stato segnalato, lo stato dell'evento ManualResetEvent rimane segnalato fino a quando non viene reimpostato manualmente. Ovvero, le chiamate a WaitOne vengono immediatamente restituite.
È possibile controllare lo stato iniziale dell'evento ManualResetEvent passando un valore booleano al costruttore: true se lo stato iniziale viene segnalato, in caso contrario false.
ManualResetEvent può inoltre essere utilizzato con i metodi staticWaitAll e WaitAny.
Per ulteriori informazioni sui meccanismi di sincronizzazione dei thread, vedere ManualResetEvent nella documentazione concettuale.