Partager via


Monitor.Wait Méthode

Définition

Libère le verrou d’un objet et bloque le thread actuel jusqu’à ce qu’il acquière à nouveau le verrou.

Surcharges

Wait(Object, Int32, Boolean)

Libère le verrou d’un objet et bloque le thread actuel jusqu’à ce qu’il acquière à nouveau le verrou. Si le délai d'attente spécifié est écoulé, le thread intègre la file d'attente opérationnelle. Cette méthode spécifie également si le domaine de synchronisation associé au contexte (dans le cas d’un contexte synchronisé) est abandonné avant l’attente et acquis à nouveau par la suite.

Wait(Object)

Libère le verrou d’un objet et bloque le thread actuel jusqu’à ce qu’il acquière à nouveau le verrou.

Wait(Object, Int32)

Libère le verrou d’un objet et bloque le thread actuel jusqu’à ce qu’il acquière à nouveau le verrou. Si le délai d'attente spécifié est écoulé, le thread intègre la file d'attente opérationnelle.

Wait(Object, TimeSpan)

Libère le verrou d’un objet et bloque le thread actuel jusqu’à ce qu’il acquière à nouveau le verrou. Si le délai d'attente spécifié est écoulé, le thread intègre la file d'attente opérationnelle.

Wait(Object, TimeSpan, Boolean)

Libère le verrou d’un objet et bloque le thread actuel jusqu’à ce qu’il acquière à nouveau le verrou. Si le délai d'attente spécifié est écoulé, le thread intègre la file d'attente opérationnelle. Le domaine de synchronisation associé au contexte synchronisé peut être abandonné avant l’attente et acquis de nouveau par la suite.

Wait(Object, Int32, Boolean)

Source:
Monitor.cs
Source:
Monitor.cs
Source:
Monitor.cs

Libère le verrou d’un objet et bloque le thread actuel jusqu’à ce qu’il acquière à nouveau le verrou. Si le délai d'attente spécifié est écoulé, le thread intègre la file d'attente opérationnelle. Cette méthode spécifie également si le domaine de synchronisation associé au contexte (dans le cas d’un contexte synchronisé) est abandonné avant l’attente et acquis à nouveau par la suite.

public:
 static bool Wait(System::Object ^ obj, int millisecondsTimeout, bool exitContext);
public static bool Wait (object obj, int millisecondsTimeout, bool exitContext);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait (object obj, int millisecondsTimeout, bool exitContext);
static member Wait : obj * int * bool -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj * int * bool -> bool
Public Shared Function Wait (obj As Object, millisecondsTimeout As Integer, exitContext As Boolean) As Boolean

Paramètres

obj
Object

Objet sur lequel attendre.

millisecondsTimeout
Int32

Nombre de millisecondes à attendre avant que le thread intègre la file d'attente opérationnelle.

exitContext
Boolean

true pour abandonner et acquérir à nouveau le domaine de synchronisation associé au contexte (dans le cas d'un contexte synchronisé) avant l'attente ; sinon, false.

Retours

true si le verrou a fait l'objet d'une nouvelle acquisition avant l'expiration du délai spécifié ; false si le verrou a fait l'objet d'une nouvelle acquisition après l'expiration du délai spécifié. La méthode ne retourne pas de valeur tant que le verrou n'est pas acquis à nouveau.

Attributs

Exceptions

Le paramètre obj a la valeur null.

Wait n’est pas appelé à partir d’un bloc de code synchronisé.

Le thread qui appelle Wait quitte ensuite l'état d'attente. Cela se produit lorsqu’un autre thread appelle la méthode Interrupt() de ce thread.

La valeur du paramètre millisecondsTimeout est négative et différente de Infinite.

Remarques

Pour plus d’informations sur cette API, consultez Remarques supplémentaires sur l’API pour Monitor.Wait.

Voir aussi

S’applique à

Wait(Object)

Source:
Monitor.cs
Source:
Monitor.cs
Source:
Monitor.cs

Libère le verrou d’un objet et bloque le thread actuel jusqu’à ce qu’il acquière à nouveau le verrou.

public:
 static bool Wait(System::Object ^ obj);
public static bool Wait (object obj);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait (object obj);
static member Wait : obj -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj -> bool
Public Shared Function Wait (obj As Object) As Boolean

Paramètres

obj
Object

Objet sur lequel attendre.

Retours

true si l'appel est retourné parce que l'appelant a de nouveau acquis le verrou pour l'objet spécifié. Cette méthode ne retourne rien si le verrou n'est pas acquis à nouveau.

Attributs

Exceptions

Le paramètre obj a la valeur null.

Le thread appelant ne possède pas le verrou pour l'objet spécifié.

Le thread qui appelle Wait quitte ensuite l'état d'attente. Cela se produit lorsqu’un autre thread appelle la méthode Interrupt() de ce thread.

Remarques

Le thread qui possède actuellement le verrou sur l’objet spécifié appelle cette méthode afin de libérer l’objet afin qu’un autre thread puisse y accéder. L’appelant est bloqué en attendant de réacquire le verrou. Cette méthode est appelée lorsque l’appelant doit attendre qu’un changement d’état se produise à la suite des opérations d’un autre thread.

Lorsqu’un thread appelle Wait, il libère le verrou sur l’objet et entre la file d’attente de l’objet. Le thread suivant dans la file d’attente prête de l’objet (le cas échéant) acquiert le verrou et a une utilisation exclusive de l’objet. Tous les threads qui appellent Wait restent dans la file d’attente jusqu’à ce qu’ils reçoivent un signal de Pulse ou PulseAll, envoyé par le propriétaire du verrou. Si Pulse est envoyé, seul le thread en tête de la file d’attente est affecté. Si PulseAll est envoyé, tous les threads qui attendent l’objet sont affectés. Lorsque le signal est reçu, un ou plusieurs threads quittent la file d’attente et entrent dans la file d’attente prête. Un thread dans la file d’attente prête est autorisé à réacquirer le verrou.

Cette méthode retourne lorsque le thread appelant réacquisit le verrou sur l’objet. Notez que cette méthode est bloquée indéfiniment si le titulaire du verrou n’appelle Pulse pas ou PulseAll.

L’appelant s’exécute Wait une seule fois, quel que soit le nombre de fois où Enter il a été appelé pour l’objet spécifié. Conceptuellement, la Wait méthode stocke le nombre de fois où l’appelant a été Enter appelé sur l’objet et appelle Exit autant de fois que nécessaire pour libérer entièrement l’objet verrouillé. L’appelant se bloque ensuite en attendant de réacquire l’objet. Lorsque l’appelant réacquipit le verrou, le système appelle Enter autant de fois que nécessaire pour restaurer le nombre enregistré Enter pour l’appelant. L’appel Wait libère le verrou pour l’objet spécifié uniquement ; si l’appelant est le propriétaire des verrous sur d’autres objets, ces verrous ne sont pas libérés.

Notez qu’un objet synchronisé contient plusieurs références, notamment une référence au thread qui contient actuellement le verrou, une référence à la file d’attente prête, qui contient les threads prêts à obtenir le verrou, et une référence à la file d’attente, qui contient les threads qui attendent la notification d’une modification de l’état de l’objet.

Les Pulseméthodes , PulseAllet Wait doivent être appelées à partir d’un bloc de code synchronisé.

Les remarques relatives à la Pulse méthode expliquent ce qui se passe si Pulse est appelé quand aucun thread n’est en attente.

Voir aussi

S’applique à

Wait(Object, Int32)

Source:
Monitor.CoreCLR.cs
Source:
Monitor.CoreCLR.cs
Source:
Monitor.CoreCLR.cs

Libère le verrou d’un objet et bloque le thread actuel jusqu’à ce qu’il acquière à nouveau le verrou. Si le délai d'attente spécifié est écoulé, le thread intègre la file d'attente opérationnelle.

public:
 static bool Wait(System::Object ^ obj, int millisecondsTimeout);
public static bool Wait (object obj, int millisecondsTimeout);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait (object obj, int millisecondsTimeout);
static member Wait : obj * int -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj * int -> bool
Public Shared Function Wait (obj As Object, millisecondsTimeout As Integer) As Boolean

Paramètres

obj
Object

Objet sur lequel attendre.

millisecondsTimeout
Int32

Nombre de millisecondes à attendre avant que le thread intègre la file d'attente opérationnelle.

Retours

true si le verrou a fait l'objet d'une nouvelle acquisition avant l'expiration du délai spécifié ; false si le verrou a fait l'objet d'une nouvelle acquisition après l'expiration du délai spécifié. La méthode ne retourne pas de valeur tant que le verrou n'est pas acquis à nouveau.

Attributs

Exceptions

Le paramètre obj a la valeur null.

Le thread appelant ne possède pas le verrou pour l'objet spécifié.

Le thread qui appelle Wait quitte ensuite l'état d'attente. Cela se produit lorsqu’un autre thread appelle la méthode Interrupt() de ce thread.

La valeur du paramètre millisecondsTimeout est négative et différente de Infinite.

Remarques

Cette méthode ne retourne pas tant qu’elle n’a pas réacquirès un verrou exclusif sur le obj paramètre.

Le thread qui possède actuellement le verrou sur l’objet spécifié appelle cette méthode afin de libérer l’objet afin qu’un autre thread puisse y accéder. L’appelant est bloqué en attendant de réacquire le verrou. Cette méthode est appelée lorsque l’appelant doit attendre qu’un changement d’état se produise à la suite des opérations d’un autre thread.

Le délai d’expiration garantit que le thread actuel ne se bloque pas indéfiniment si un autre thread libère le verrou sans appeler d’abord la Pulse méthode ou PulseAll . Il déplace également le thread vers la file d’attente prête, en contournant les autres threads devant lui dans la file d’attente, afin qu’il puisse récupérer le verrou plus tôt. Le thread peut tester la valeur de retour de la Wait méthode pour déterminer si elle a réacquisté le verrou avant le délai d’expiration. Le thread peut évaluer les conditions qui l’ont amené à entrer dans l’attente et, si nécessaire, appeler à nouveau la Wait méthode.

Lorsqu’un thread appelle Wait, il libère le verrou sur l’objet et entre la file d’attente de l’objet. Le thread suivant dans la file d’attente prête de l’objet (le cas échéant) acquiert le verrou et a une utilisation exclusive de l’objet. Le thread appelé Wait reste dans la file d’attente jusqu’à ce qu’un thread qui contient le verrou appelle PulseAll, soit il est le suivant dans la file d’attente et un thread qui contient le verrou appelle Pulse. Toutefois, s’il millisecondsTimeout s’écoule avant qu’un autre thread appelle l’objet Pulse ou PulseAll la méthode de cet objet, le thread d’origine est déplacé vers la file d’attente prête afin de récupérer le verrou.

Notes

Si Infinite est spécifié pour le millisecondsTimeout paramètre, cette méthode est bloquée indéfiniment, sauf si le titulaire du verrou appelle Pulse ou PulseAll. Si millisecondsTimeout est égal à 0, le thread qui appelle Wait libère le verrou, puis entre immédiatement dans la file d’attente prête pour récupérer le verrou.

L’appelant s’exécute Wait une seule fois, quel que soit le nombre de fois où Enter il a été appelé pour l’objet spécifié. Conceptuellement, la Wait méthode stocke le nombre de fois où l’appelant a été Enter appelé sur l’objet et appelle Exit autant de fois que nécessaire pour libérer entièrement l’objet verrouillé. L’appelant se bloque ensuite en attendant de réacquire l’objet. Lorsque l’appelant réacquipit le verrou, le système appelle Enter autant de fois que nécessaire pour restaurer le nombre enregistré Enter pour l’appelant. L’appel Wait libère le verrou pour l’objet spécifié uniquement ; si l’appelant est le propriétaire des verrous sur d’autres objets, ces verrous ne sont pas libérés.

Notes

Un objet synchronisé contient plusieurs références, notamment une référence au thread qui contient actuellement le verrou, une référence à la file d’attente prête, qui contient les threads prêts pour obtenir le verrou, et une référence à la file d’attente, qui contient les threads qui attendent la notification d’une modification de l’état de l’objet.

Les Pulseméthodes , PulseAllet Wait doivent être appelées à partir d’un bloc de code synchronisé.

Les remarques relatives à la Pulse méthode expliquent ce qui se passe si Pulse est appelé quand aucun thread n’est en attente.

Voir aussi

S’applique à

Wait(Object, TimeSpan)

Source:
Monitor.cs
Source:
Monitor.cs
Source:
Monitor.cs

Libère le verrou d’un objet et bloque le thread actuel jusqu’à ce qu’il acquière à nouveau le verrou. Si le délai d'attente spécifié est écoulé, le thread intègre la file d'attente opérationnelle.

public:
 static bool Wait(System::Object ^ obj, TimeSpan timeout);
public static bool Wait (object obj, TimeSpan timeout);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait (object obj, TimeSpan timeout);
static member Wait : obj * TimeSpan -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj * TimeSpan -> bool
Public Shared Function Wait (obj As Object, timeout As TimeSpan) As Boolean

Paramètres

obj
Object

Objet sur lequel attendre.

timeout
TimeSpan

TimeSpan qui représente le temps à attendre avant que le thread n'intègre la file d'attente opérationnelle.

Retours

true si le verrou a fait l'objet d'une nouvelle acquisition avant l'expiration du délai spécifié ; false si le verrou a fait l'objet d'une nouvelle acquisition après l'expiration du délai spécifié. La méthode ne retourne pas de valeur tant que le verrou n'est pas acquis à nouveau.

Attributs

Exceptions

Le paramètre obj a la valeur null.

Le thread appelant ne possède pas le verrou pour l'objet spécifié.

Le thread qui appelle Wait quitte ensuite l'état d'attente. Cela se produit lorsqu’un autre thread appelle la méthode Interrupt() de ce thread.

La valeur du timeout paramètre en millisecondes est négative et ne représente Infinite pas (-1 milliseconde) ou est supérieure à Int32.MaxValue.

Remarques

Cette méthode ne retourne pas tant qu’elle n’a pas réacquirès un verrou exclusif sur le obj paramètre.

Le thread qui possède actuellement le verrou sur l’objet spécifié appelle cette méthode afin de libérer l’objet afin qu’un autre thread puisse y accéder. L’appelant est bloqué en attendant de réacquire le verrou. Cette méthode est appelée lorsque l’appelant doit attendre qu’un changement d’état se produise à la suite des opérations d’un autre thread.

Le délai d’expiration garantit que le thread actuel ne se bloque pas indéfiniment si un autre thread libère le verrou sans appeler d’abord la Pulse méthode ou PulseAll . Il déplace également le thread vers la file d’attente prête, en contournant les autres threads devant lui dans la file d’attente, afin qu’il puisse récupérer le verrou plus tôt. Le thread peut tester la valeur de retour de la Wait méthode pour déterminer si elle a réacquisté le verrou avant le délai d’expiration. Le thread peut évaluer les conditions qui l’ont amené à entrer dans l’attente et, si nécessaire, appeler à nouveau la Wait méthode.

Lorsqu’un thread appelle Wait, il libère le verrou sur l’objet et entre la file d’attente de l’objet. Le thread suivant dans la file d’attente prête de l’objet (le cas échéant) acquiert le verrou et a une utilisation exclusive de l’objet. Le thread appelé Wait reste dans la file d’attente jusqu’à ce qu’un thread qui contient le verrou appelle PulseAll, soit il est le suivant dans la file d’attente et un thread qui contient le verrou appelle Pulse. Toutefois, s’il timeout s’écoule avant qu’un autre thread appelle l’objet Pulse ou PulseAll la méthode de cet objet, le thread d’origine est déplacé vers la file d’attente prête afin de récupérer le verrou.

Notes

Si une TimeSpan valeur représentant -1 milliseconde est spécifiée pour le timeout paramètre, cette méthode est bloquée indéfiniment, sauf si le titulaire du verrou appelle Pulse ou PulseAll. Si timeout la valeur est de 0 milliseconde, le thread qui appelle Wait libère le verrou, puis entre immédiatement dans la file d’attente prête pour récupérer le verrou.

L’appelant s’exécute Wait une seule fois, quel que soit le nombre de fois où Enter il a été appelé pour l’objet spécifié. Conceptuellement, la Wait méthode stocke le nombre de fois où l’appelant a été Enter appelé sur l’objet et appelle Exit autant de fois que nécessaire pour libérer entièrement l’objet verrouillé. L’appelant se bloque ensuite en attendant de réacquire l’objet. Lorsque l’appelant réacquipit le verrou, le système appelle Enter autant de fois que nécessaire pour restaurer le nombre enregistré Enter pour l’appelant. L’appel Wait libère le verrou pour l’objet spécifié uniquement ; si l’appelant est le propriétaire des verrous sur d’autres objets, ces verrous ne sont pas libérés.

Notes

Un objet synchronisé contient plusieurs références, notamment une référence au thread qui contient actuellement le verrou, une référence à la file d’attente prête, qui contient les threads prêts pour obtenir le verrou, et une référence à la file d’attente, qui contient les threads qui attendent la notification d’une modification de l’état de l’objet.

Les Pulseméthodes , PulseAllet Wait doivent être appelées à partir d’un bloc de code synchronisé.

Les remarques relatives à la Pulse méthode expliquent ce qui se passe si Pulse est appelé quand aucun thread n’est en attente.

Voir aussi

S’applique à

Wait(Object, TimeSpan, Boolean)

Source:
Monitor.cs
Source:
Monitor.cs
Source:
Monitor.cs

Libère le verrou d’un objet et bloque le thread actuel jusqu’à ce qu’il acquière à nouveau le verrou. Si le délai d'attente spécifié est écoulé, le thread intègre la file d'attente opérationnelle. Le domaine de synchronisation associé au contexte synchronisé peut être abandonné avant l’attente et acquis de nouveau par la suite.

public:
 static bool Wait(System::Object ^ obj, TimeSpan timeout, bool exitContext);
public static bool Wait (object obj, TimeSpan timeout, bool exitContext);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait (object obj, TimeSpan timeout, bool exitContext);
static member Wait : obj * TimeSpan * bool -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj * TimeSpan * bool -> bool
Public Shared Function Wait (obj As Object, timeout As TimeSpan, exitContext As Boolean) As Boolean

Paramètres

obj
Object

Objet sur lequel attendre.

timeout
TimeSpan

TimeSpan qui représente le temps à attendre avant que le thread n'intègre la file d'attente opérationnelle.

exitContext
Boolean

true pour abandonner et acquérir à nouveau le domaine de synchronisation associé au contexte (dans le cas d'un contexte synchronisé) avant l'attente ; sinon, false.

Retours

true si le verrou a fait l'objet d'une nouvelle acquisition avant l'expiration du délai spécifié ; false si le verrou a fait l'objet d'une nouvelle acquisition après l'expiration du délai spécifié. La méthode ne retourne pas de valeur tant que le verrou n'est pas acquis à nouveau.

Attributs

Exceptions

Le paramètre obj a la valeur null.

Wait n’est pas appelé à partir d’un bloc de code synchronisé.

Le thread qui appelle Wait quitte ensuite l’état d’attente. Cela se produit lorsqu’un autre thread appelle la méthode Interrupt() de ce thread.

Le timeout paramètre est négatif et ne représente Infinite pas (-1 milliseconde) ou est supérieur à Int32.MaxValue.

Remarques

Pour plus d’informations sur cette API, consultez Remarques supplémentaires sur l’API pour Monitor.Wait.

Voir aussi

S’applique à