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 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.