ManualResetEvent et ManualResetEventSlim
La classe System.Threading.ManualResetEvent représente un événement du handle d'attente local qui doit être réinitialisé manuellement une fois signalé. Cette classe représente un cas spécifique de la classe de base correspondante (System.Threading.EventWaitHandle). Consultez la documentation conceptuelle EventWaitHandle pour plus d'informations sur l'utilisation et les fonctions des événements à réinitialisation manuelle.
Un objet ManualResetEvent reste signalé jusqu'à ce que sa méthode EventWaitHandle.Reset soit appelée. Vous pouvez libérer n'importe quel nombre de threads en attente (ou de threads en attente une fois l'événement signalé) pendant que l'état de l'objet est Signalé. ManualResetEvent correspond à un appel de Win32 CreateEvent, en donnant la valeur true à l'argument bManualReset.
Dans le .NET Framework version 4, vous pouvez utiliser la classe System.Threading.ManualResetEventSlim pour de meilleures performances lorsque les temps d'attente sont supposés être très courts et lorsque l'événement ne dépasse pas de limite de processus. ManualResetEventSlim utilise la rotation intensive pendant une courte période en attendant que l'événement soit signalé. Lorsque les temps d'attente sont courts, la rotation peut être beaucoup moins coûteuse que l'utilisation de handles d'attente. Toutefois, si l'événement n'est pas signalé avant un temps donné, ManualResetEventSlim a recours à une attente de descripteur d'événement normale.