Partager via


Handles d'attente

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.

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

Semaphore et SemaphoreSlim

Autres ressources

Threading managé

Fonctionnalités et objets de threading

EventWaitHandle, AutoResetEvent, CountdownEvent et ManualResetEvent

Historique des modifications

Date

Historique

Motif

Avril 2011

Correction : La méthode WaitHandle.SignalAndWait n'est pas atomique.

Commentaires client.