ManualResetEvent y ManualResetEventSlim
La clase System.Threading.ManualResetEvent representa un evento de identificador de espera local que se debe restablecer manualmente después de ser señalizado. Esta clase es un caso especial de su clase base, System.Threading.EventWaitHandle. Consulte EventWaitHandle en la documentación conceptual para conocer el uso y las características de los eventos que se restablecen manualmente.
Un objeto ManualResetEvent permanece señalizado hasta que se llame al método EventWaitHandle.Reset. Se pueden liberar cualquier número de subprocesos en espera, o de subprocesos que esperan en el evento después de haber sido señalizado, mientras el estado del objeto es señalizado. ManualResetEvent corresponde a una llamada CreateEvent de Win32, especificando true para el argumento bManualReset.
En .NET Framework versión 4, se puede utilizar la claseSystem.Threading.ManualResetEventSlim para mejorar el rendimiento cuando se prevé que los tiempos de espera sean muy cortos y cuando el evento no cruza los límites de un proceso. ManualResetEventSlim utiliza giros de ocupado durante un breve intervalo de tiempo mientras espera a que se señale el evento. Cuando los tiempos de espera son cortos, los giros puedes ser mucho menos costosos que las esperas con identificadores de espera. Sin embargo, si no se señala el evento dentro de un período de tiempo determinado, ManualResetEventSlim recurre a una espera de identificador de evento normal.