Monitor.Wait Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Libère le verrou sur un objet et bloque le thread actuel jusqu’à ce qu’il réacquire le verrou.
Surcharges
| Nom | Description |
|---|---|
| Wait(Object, Int32, Boolean) |
Libère le verrou sur un objet et bloque le thread actuel jusqu’à ce qu’il réacquire le verrou. Si l’intervalle de délai d’attente spécifié s’écoule, le thread entre dans la file d’attente prête. Cette méthode spécifie également si le domaine de synchronisation pour le contexte (s’il se trouve dans un contexte synchronisé) est quitté avant l’attente et réacquiré par la suite. |
| Wait(Object) |
Libère le verrou sur un objet et bloque le thread actuel jusqu’à ce qu’il réacquire le verrou. |
| Wait(Object, Int32) |
Libère le verrou sur un objet et bloque le thread actuel jusqu’à ce qu’il réacquire le verrou. Si l’intervalle de délai d’attente spécifié s’écoule, le thread entre dans la file d’attente prête. |
| Wait(Object, TimeSpan) |
Libère le verrou sur un objet et bloque le thread actuel jusqu’à ce qu’il réacquire le verrou. Si l’intervalle de délai d’attente spécifié s’écoule, le thread entre dans la file d’attente prête. |
| Wait(Object, TimeSpan, Boolean) |
Libère le verrou sur un objet et bloque le thread actuel jusqu’à ce qu’il réacquire le verrou. Si l’intervalle de délai d’attente spécifié s’écoule, le thread entre dans la file d’attente prête. Vous pouvez éventuellement quitter le domaine de synchronisation pour le contexte synchronisé avant l’attente et réactiver le domaine par la suite. |
Wait(Object, Int32, Boolean)
- Source:
- Monitor.cs
- Source:
- Monitor.cs
- Source:
- Monitor.cs
- Source:
- Monitor.cs
- Source:
- Monitor.cs
Libère le verrou sur un objet et bloque le thread actuel jusqu’à ce qu’il réacquire le verrou. Si l’intervalle de délai d’attente spécifié s’écoule, le thread entre dans la file d’attente prête. Cette méthode spécifie également si le domaine de synchronisation pour le contexte (s’il se trouve dans un contexte synchronisé) est quitté avant l’attente et réacquiré par la suite.
public:
static bool Wait(System::Object ^ obj, int millisecondsTimeout, bool exitContext);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait(object obj, int millisecondsTimeout, bool exitContext);
public static bool Wait(object obj, int millisecondsTimeout, bool exitContext);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj * int * bool -> bool
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 entre dans la file d’attente prête.
- exitContext
- Boolean
true pour quitter et rééquirer le domaine de synchronisation pour le contexte (si dans un contexte synchronisé) avant l’attente ; sinon, false.
Retours
true si le verrou a été réapprouillé avant l’expiration du délai spécifié ; false si le verrou a été réapprouillé après l’expiration du délai spécifié. La méthode ne retourne pas tant que le verrou n’est pas réapprouillé.
- Attributs
Exceptions
Le obj paramètre est null.
Wait n’est pas appelé à partir d’un bloc de code synchronisé.
Le thread qui appelle Wait est interrompu ultérieurement par l’état d’attente. Cela se produit quand un autre thread appelle la méthode de Interrupt() ce thread.
La valeur du millisecondsTimeout paramètre est négative et n’est pas égale à Infinite.
Remarques
Pour plus d’informations sur cette API, consultez les remarques d’API supplémentaires pour Monitor.Wait.
Voir aussi
S’applique à
Wait(Object)
- Source:
- Monitor.cs
- Source:
- Monitor.cs
- Source:
- Monitor.cs
- Source:
- Monitor.cs
- Source:
- Monitor.cs
Libère le verrou sur un objet et bloque le thread actuel jusqu’à ce qu’il réacquire 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 a retourné, car l’appelant a réapprouillé le verrou de l’objet spécifié. Cette méthode ne retourne pas si le verrou n’est pas réapprouillé.
- Attributs
Exceptions
Le obj paramètre est null.
Le thread appelant ne possède pas le verrou de l’objet spécifié.
Le thread qui appelle Wait est interrompu ultérieurement par l’état d’attente. Cela se produit quand un autre thread appelle la méthode de Interrupt() ce thread.
Remarques
Le thread qui possède actuellement le verrou sur l’objet spécifié appelle cette méthode pour libérer l’objet afin qu’un autre thread puisse y accéder. L'appelant est bloqué en attendant de réacquérir le verrou. Cette méthode est appelée lorsque l’appelant doit attendre une modification d’état qui se produira à la suite des opérations d’un autre thread.
Lorsqu’un thread appelle Wait, il libère le verrou sur l’objet et entre dans la file d’attente de l’objet. Le thread suivant dans la file d’attente prête de l’objet (s’il en existe un) acquiert le verrou et a l’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 provenant ou PulsePulseAllenvoyé par le propriétaire du verrou. S’il Pulse est envoyé, seul le thread à la tête de la file d’attente est affecté. Si PulseAll elle est envoyée, 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éactiver le verrou.
Cette méthode retourne lorsque le thread appelant réapparaît le verrou sur l’objet. Notez que cette méthode bloque indéfiniment si le titulaire du verrou n’appelle Pulse pas ou PulseAll.
L'appelant exécute Wait une seule fois, quel que soit le nombre de fois où Enter a été appelé pour l'objet spécifié. Conceptuellement, la Wait méthode stocke le nombre de fois où l'appelant a invoqué Enter sur l'objet et appelle Exit autant de fois que nécessaire pour libérer complètement l'objet verrouillé. L'appelant se bloque ensuite en attendant de réacquérir l'objet. Lorsque l’appelant réacquire 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 de 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 dans l’état de l’objet.
Les méthodes Pulse, PulseAll et Wait doivent être appelées à partir d’un bloc de code synchronisé.
Les remarques de la Pulse méthode expliquent ce qui se passe si Pulse elle est appelée quand aucun thread n’attend.
Voir aussi
S’applique à
Wait(Object, Int32)
- Source:
- Monitor.CoreCLR.cs
- Source:
- Monitor.cs
- Source:
- Monitor.CoreCLR.cs
- Source:
- Monitor.CoreCLR.cs
- Source:
- Monitor.CoreCLR.cs
Libère le verrou sur un objet et bloque le thread actuel jusqu’à ce qu’il réacquire le verrou. Si l’intervalle de délai d’attente spécifié s’écoule, le thread entre dans la file d’attente prête.
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 entre dans la file d’attente prête.
Retours
true si le verrou a été réapprouillé avant l’expiration du délai spécifié ; false si le verrou a été réapprouillé après l’expiration du délai spécifié. La méthode ne retourne pas tant que le verrou n’est pas réapprouillé.
- Attributs
Exceptions
Le obj paramètre est null.
Le thread appelant ne possède pas le verrou de l’objet spécifié.
Le thread qui appelle Wait est interrompu ultérieurement par l’état d’attente. Cela se produit quand un autre thread appelle la méthode de Interrupt() ce thread.
La valeur du millisecondsTimeout paramètre est négative et n’est pas égale à Infinite.
Remarques
Cette méthode ne retourne pas tant qu’elle ne réacquire pas 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 pour libérer l’objet afin qu’un autre thread puisse y accéder. L'appelant est bloqué en attendant de réacquérir le verrou. Cette méthode est appelée lorsque l’appelant doit attendre une modification d’état qui se produira à la suite des opérations d’un autre thread.
Le délai d’attente garantit que le thread actuel ne bloque pas indéfiniment si un autre thread libère le verrou sans appeler d’abord la méthode Pulse ou PulseAll. Il déplace également le thread vers la file d’attente prête, contournant les autres threads devant lui dans la file d’attente, afin qu’il puisse réacquérir le verrou plus tôt. Le thread peut tester la valeur de retour de la méthode Wait pour déterminer s’il a réacquis le verrou avant le délai d’attente. Le thread peut évaluer les conditions qui l'ont conduit à entrer en attente et, si nécessaire, appeler la méthode Wait à nouveau.
Lorsqu’un thread appelle Wait, il libère le verrou sur l’objet et entre dans la file d’attente de l’objet. Le thread suivant dans la file d’attente prête de l’objet (s’il en existe un) acquiert le verrou et a l’utilisation exclusive de l’objet. Le thread qui a appelé Wait reste dans la file d’attente tant qu’un thread qui détient le verrou n’a pas appelé PulseAll, ou bien qu’il soit le suivant dans la file d’attente et qu’un thread qui détient le verrou n’ait appelé Pulse. Toutefois, si millisecondsTimeout s’écoule avant qu’un autre thread appelle la méthode Pulse ou PulseAll de cet objet, le thread d’origine est déplacé vers la file d’attente prête pour récupérer le verrou.
Note
Si Infinite est spécifié pour le paramètre millisecondsTimeout, cette méthode se bloque 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 des threads prêts pour récupérer le verrou.
L'appelant exécute Wait une seule fois, quel que soit le nombre de fois où Enter a été appelé pour l'objet spécifié. Conceptuellement, la Wait méthode stocke le nombre de fois où l'appelant a invoqué Enter sur l'objet et appelle Exit autant de fois que nécessaire pour libérer complètement l'objet verrouillé. L'appelant se bloque ensuite en attendant de réacquérir l'objet. Lorsque l’appelant réacquire 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 de 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.
Note
Un objet synchronisé contient plusieurs références, y compris 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 méthodes Pulse, PulseAll et Wait doivent être appelées à partir d’un bloc de code synchronisé.
Les remarques de la Pulse méthode expliquent ce qui se passe si Pulse elle est appelée quand aucun thread n’attend.
Voir aussi
S’applique à
Wait(Object, TimeSpan)
- Source:
- Monitor.cs
- Source:
- Monitor.cs
- Source:
- Monitor.cs
- Source:
- Monitor.cs
- Source:
- Monitor.cs
Libère le verrou sur un objet et bloque le thread actuel jusqu’à ce qu’il réacquire le verrou. Si l’intervalle de délai d’attente spécifié s’écoule, le thread entre dans la file d’attente prête.
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
Représentant TimeSpan la durée d’attente avant que le thread entre dans la file d’attente prête.
Retours
true si le verrou a été réapprouillé avant l’expiration du délai spécifié ; false si le verrou a été réapprouillé après l’expiration du délai spécifié. La méthode ne retourne pas tant que le verrou n’est pas réapprouillé.
- Attributs
Exceptions
Le obj paramètre est null.
Le thread appelant ne possède pas le verrou de l’objet spécifié.
Le thread qui appelle Wait est interrompu ultérieurement par l’état d’attente. Cela se produit quand un autre thread appelle la méthode de Interrupt() ce thread.
La valeur du timeout paramètre en millisecondes est négative et ne représente Infinite pas (-1 millisecondes) ou est supérieure à Int32.MaxValue.
Remarques
Cette méthode ne retourne pas tant qu’elle ne réacquire pas 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 pour libérer l’objet afin qu’un autre thread puisse y accéder. L'appelant est bloqué en attendant de réacquérir le verrou. Cette méthode est appelée lorsque l’appelant doit attendre une modification d’état qui se produira à la suite des opérations d’un autre thread.
Le délai d’attente garantit que le thread actuel ne bloque pas indéfiniment si un autre thread libère le verrou sans appeler d’abord la méthode Pulse ou PulseAll. Il déplace également le thread vers la file d’attente prête, contournant les autres threads devant lui dans la file d’attente, afin qu’il puisse réacquérir le verrou plus tôt. Le thread peut tester la valeur de retour de la méthode Wait pour déterminer s’il a réacquis le verrou avant le délai d’attente. Le thread peut évaluer les conditions qui l'ont conduit à entrer en attente et, si nécessaire, appeler la méthode Wait à nouveau.
Lorsqu’un thread appelle Wait, il libère le verrou sur l’objet et entre dans la file d’attente de l’objet. Le thread suivant dans la file d’attente prête de l’objet (s’il en existe un) acquiert le verrou et a l’utilisation exclusive de l’objet. Le thread qui a appelé Wait reste dans la file d’attente tant qu’un thread qui détient le verrou n’a pas appelé PulseAll, ou bien qu’il soit le suivant dans la file d’attente et qu’un thread qui détient le verrou n’ait appelé Pulse. Toutefois, si timeout s’écoule avant qu’un autre thread appelle la méthode Pulse ou PulseAll de cet objet, le thread d’origine est déplacé vers la file d’attente prête pour récupérer le verrou.
Note
Si un TimeSpan représentant -1 millisecondes est spécifié pour le paramètre timeout, cette méthode se bloque indéfiniment, sauf si le titulaire du verrou appelle Pulse ou PulseAll. Si timeout est de 0 milliseconde, le thread qui appelle Wait libère le verrou, puis entre immédiatement dans la file d’attente prête afin de regagner le verrou.
L'appelant exécute Wait une seule fois, quel que soit le nombre de fois où Enter a été appelé pour l'objet spécifié. Conceptuellement, la Wait méthode stocke le nombre de fois où l'appelant a invoqué Enter sur l'objet et appelle Exit autant de fois que nécessaire pour libérer complètement l'objet verrouillé. L'appelant se bloque ensuite en attendant de réacquérir l'objet. Lorsque l’appelant réacquire 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 de 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.
Note
Un objet synchronisé contient plusieurs références, y compris 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 méthodes Pulse, PulseAll et Wait doivent être appelées à partir d’un bloc de code synchronisé.
Les remarques de la Pulse méthode expliquent ce qui se passe si Pulse elle est appelée quand aucun thread n’attend.
Voir aussi
S’applique à
Wait(Object, TimeSpan, Boolean)
- Source:
- Monitor.cs
- Source:
- Monitor.cs
- Source:
- Monitor.cs
- Source:
- Monitor.cs
- Source:
- Monitor.cs
Libère le verrou sur un objet et bloque le thread actuel jusqu’à ce qu’il réacquire le verrou. Si l’intervalle de délai d’attente spécifié s’écoule, le thread entre dans la file d’attente prête. Vous pouvez éventuellement quitter le domaine de synchronisation pour le contexte synchronisé avant l’attente et réactiver le domaine par la suite.
public:
static bool Wait(System::Object ^ obj, TimeSpan timeout, bool exitContext);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait(object obj, TimeSpan timeout, bool exitContext);
public static bool Wait(object obj, TimeSpan timeout, bool exitContext);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj * TimeSpan * bool -> bool
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
Représentant TimeSpan la durée d’attente avant que le thread entre dans la file d’attente prête.
- exitContext
- Boolean
true pour quitter et rééquirer le domaine de synchronisation pour le contexte (si dans un contexte synchronisé) avant l’attente ; sinon, false.
Retours
true si le verrou a été réapprouillé avant l’expiration du délai spécifié ; false si le verrou a été réapprouillé après l’expiration du délai spécifié. La méthode ne retourne pas tant que le verrou n’est pas réapprouillé.
- Attributs
Exceptions
Le obj paramètre est null.
Wait n’est pas appelé à partir d’un bloc de code synchronisé.
Le thread qui appelle Wait est interrompu ultérieurement à partir de l’état d’attente. Cela se produit quand un autre thread appelle la méthode de Interrupt() 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 les remarques d’API supplémentaires pour Monitor.Wait.