Partager via


Handles d'attente

Mise à jour : novembre 2007

La classe WaitHandle encapsule les handles de synchronisation Win32. Elle est utilisée pour représenter tous les objets de synchronisation du runtime qui autorisent plusieurs opérations d'attente. Pour obtenir une comparaison entre des handles d'attente et d'autres objets de synchronisation, consultez Vue d'ensemble des primitives de synchronisation.

La classe WaitHandle elle-même est abstraite. En plus de classes dérivées, elle possède plusieurs méthodes statiques qui activent l'attente sur plusieurs événements. WaitHandle inclut les classes dérivées suivantes :

Dans la mesure où la classe WaitHandle dérive de MarshalByRefObject, ces classes peuvent être utilisées pour synchroniser les activités des threads au-delà des limites de domaine d'application.

Les threads peuvent bloquer un handle d'attente individuel en appelant la méthode d'instance de WaitOne. En outre, la classe WaitHandle possède des méthodes statiques surchargées pour attendre que tout un jeu spécifié de handles d'attente ait été signalé (WaitAll), ou attendre qu'un handle du jeu spécifié de handles d'attente ait été signalé (WaitAny). Les surcharges de ces méthodes fournissent des intervalles de délai avant l'abandon de l'attente et la possibilité de sortir d'un contexte de synchronisation avant d'entrer dans la période d'attente, ce qui permet à d'autres threads d'utiliser le contexte de synchronisation.

Dans la version 2.0 du .NET Framework, les handles d'attente ont également la méthode SignalAndWait statique, qui permet à un thread d'envoyer un signal à un handle d'attente et d'en attendre immédiatement un autre, comme une opération atomique.

Les classes dérivées de WaitHandle diffèrent dans leur affinité de thread. Les handles d'attente d'événement (EventWaitHandle, AutoResetEvent et ManualResetEvent) et les sémaphores n'ont pas d'affinité de thread. Tout thread peut envoyer un signal à un handle d'attente d'événement ou un sémaphore. Les mutex, en revanche, ont une affinité de thread. Le thread qui possède un mutex doit le libérer ; une exception est levée si un thread appelle la méthode ReleaseMutex sur un mutex qu'il ne possède pas.

Voir aussi

Concepts

Mutex

Sémaphores

Autres ressources

Threading managé

Fonctionnalités et objets de threading

EventWaitHandle, AutoResetEvent et ManualResetEvent