Monitor.Wait Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Uvolní zámek objektu a zablokuje aktuální vlákno, dokud ho znovu nenasadí.
Přetížení
| Name | Description |
|---|---|
| Wait(Object, Int32, Boolean) |
Uvolní zámek objektu a zablokuje aktuální vlákno, dokud ho znovu nenasadí. Pokud zadaný interval časového limitu uplynul, vlákno přejde do připravené fronty. Tato metoda také určuje, zda je synchronizační doména pro kontext (pokud v synchronizovaovém kontextu) ukončena před čekáním a následně se znovu zobrazí. |
| Wait(Object) |
Uvolní zámek objektu a zablokuje aktuální vlákno, dokud ho znovu nenasadí. |
| Wait(Object, Int32) |
Uvolní zámek objektu a zablokuje aktuální vlákno, dokud ho znovu nenasadí. Pokud zadaný interval časového limitu uplynul, vlákno přejde do připravené fronty. |
| Wait(Object, TimeSpan) |
Uvolní zámek objektu a zablokuje aktuální vlákno, dokud ho znovu nenasadí. Pokud zadaný interval časového limitu uplynul, vlákno přejde do připravené fronty. |
| Wait(Object, TimeSpan, Boolean) |
Uvolní zámek objektu a zablokuje aktuální vlákno, dokud ho znovu nenasadí. Pokud zadaný interval časového limitu uplynul, vlákno přejde do připravené fronty. Volitelně ukončí synchronizační doménu pro synchronizovaný kontext před čekáním a následně ji znovu vyžádá. |
Wait(Object, Int32, Boolean)
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
Uvolní zámek objektu a zablokuje aktuální vlákno, dokud ho znovu nenasadí. Pokud zadaný interval časového limitu uplynul, vlákno přejde do připravené fronty. Tato metoda také určuje, zda je synchronizační doména pro kontext (pokud v synchronizovaovém kontextu) ukončena před čekáním a následně se znovu zobrazí.
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
Parametry
- obj
- Object
Objekt, na kterém se má čekat.
- millisecondsTimeout
- Int32
Počet milisekund, které se mají počkat, než vlákno přejde do připravené fronty.
- exitContext
- Boolean
trueukončit a znovu požádat synchronizační doménu pro kontext (pokud je v synchronizovaném kontextu) před čekáním; v opačném případě . false
Návraty
true byl-li zámek znovu vyzván před uplynutím zadaného času; false pokud se zámek po uplynutí zadaného času znovu vynutil. Metoda se nevrátí, dokud se zámek neobsadí.
- Atributy
Výjimky
Parametr obj je null.
Wait není vyvolána z synchronizovaného bloku kódu.
Vlákno, které se vyvolá Wait , se později přeruší ze stavu čekání. K tomu dochází, když jiné vlákno volá metodu Interrupt() tohoto vlákna.
Hodnota parametru millisecondsTimeout je záporná a nerovná se Infinite.
Poznámky
Další informace o tomto rozhraní API naleznete v tématu Doplňkové poznámky k rozhraní API pro Monitor.Wait.
Viz také
Platí pro
Wait(Object)
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
Uvolní zámek objektu a zablokuje aktuální vlákno, dokud ho znovu nenasadí.
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
Parametry
- obj
- Object
Objekt, na kterém se má čekat.
Návraty
true pokud volání vrátilo, protože volající znovu inquired zámek pro zadaný objekt. Tato metoda se nevrátí, pokud zámek není znovu vyzván.
- Atributy
Výjimky
Parametr obj je null.
Volající vlákno nevlastní zámek pro zadaný objekt.
Vlákno, které se vyvolá Wait , se později přeruší ze stavu čekání. K tomu dochází, když jiné vlákno volá metodu Interrupt() tohoto vlákna.
Poznámky
Vlákno, které aktuálně vlastní zámek u zadaného objektu, vyvolá tuto metodu, aby uvolnilo objekt, aby k němu mohlo přistupovat jiné vlákno. Volající je blokován při čekání na opětovné získání zámku. Tato metoda se volá, když volající potřebuje počkat na změnu stavu, která nastane v důsledku operací jiného vlákna.
Při volání Waitvlákna uvolní zámek objektu a přejde do fronty čekání objektu. Další vlákno ve frontě připravené pro objekt (pokud existuje) získá zámek a má výhradní použití objektu. Všechna vlákna, která volají Wait , zůstanou ve frontě čekání, dokud neobdrží signál od Pulse nebo PulseAll, odeslané vlastníkem zámku. Pokud Pulse je odesláno, bude ovlivněno pouze vlákno v hlavě čekající fronty. Pokud PulseAll je odesláno, jsou ovlivněna všechna vlákna, která čekají na objekt. Při přijetí signálu opustí jedno nebo více vláken čekající frontu a vstoupí do připravené fronty. Vlákno ve frontě připravené je povoleno znovu získat zámek.
Tato metoda se vrátí, když volající vlákno znovu vyvolá zámek objektu. Všimněte si, že tato metoda blokuje neomezeně dlouhou dobu, pokud držitel zámku nezavolá Pulse nebo PulseAll.
Volající se spustí Wait jednou bez ohledu na počet vyvolání Enter zadaného objektu. Koncepčně metoda Wait ukládá počet, kolikrát volající vyvolal Enter na objektu, a volá Exit tolikrát, kolikrát je potřeba k úplnému uvolnění uzamčeného objektu. Volající pak zablokuje svojí činnost a čeká na opětovné získání objektu. Když volající znovu získá zámek, systém zavolá Enter tolikrát, kolikrát je nutné k obnovení uložené hodnoty Enter. Volání Wait uvolní zámek pouze pro zadaný objekt. Pokud je volající vlastníkem zámků u jiných objektů, tyto zámky se nevyvolají.
Všimněte si, že synchronizovaný objekt obsahuje několik odkazů, včetně odkazu na vlákno, které aktuálně obsahuje zámek, odkaz na připravenou frontu, která obsahuje vlákna připravená k získání zámku, a odkaz na čekající frontu, která obsahuje vlákna čekající na oznámení o změně ve stavu objektu.
, PulsePulseAlla Wait metody musí být vyvolány z synchronizovaného bloku kódu.
Poznámky k metodě Pulse vysvětlují, co se stane, když se Pulse volá, když žádná vlákna nečekají.
Viz také
Platí pro
Wait(Object, Int32)
- Zdroj:
- Monitor.CoreCLR.cs
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.CoreCLR.cs
- Zdroj:
- Monitor.CoreCLR.cs
- Zdroj:
- Monitor.CoreCLR.cs
Uvolní zámek objektu a zablokuje aktuální vlákno, dokud ho znovu nenasadí. Pokud zadaný interval časového limitu uplynul, vlákno přejde do připravené fronty.
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
Parametry
- obj
- Object
Objekt, na kterém se má čekat.
- millisecondsTimeout
- Int32
Počet milisekund, které se mají počkat, než vlákno přejde do připravené fronty.
Návraty
true byl-li zámek znovu vyzván před uplynutím zadaného času; false pokud se zámek po uplynutí zadaného času znovu vynutil. Metoda se nevrátí, dokud se zámek neobsadí.
- Atributy
Výjimky
Parametr obj je null.
Volající vlákno nevlastní zámek pro zadaný objekt.
Vlákno, které se vyvolá Wait , se později přeruší ze stavu čekání. K tomu dochází, když jiné vlákno volá metodu Interrupt() tohoto vlákna.
Hodnota parametru millisecondsTimeout je záporná a nerovná se Infinite.
Poznámky
Tato metoda se nevrátí, dokud nezíská výhradní zámek na parametru obj.
Vlákno, které aktuálně vlastní zámek u zadaného objektu, vyvolá tuto metodu, aby uvolnilo objekt, aby k němu mohlo přistupovat jiné vlákno. Volající je blokován při čekání na opětovné získání zámku. Tato metoda se volá, když volající potřebuje počkat na změnu stavu, která nastane v důsledku operací jiného vlákna.
Časový limit zajišťuje, že aktuální vlákno neblokuje neomezeně dlouho, pokud jiné vlákno uvolní zámek bez prvního volání Pulse nebo PulseAll metody. Vlákno také přesune do připravené fronty, obcházejíc tím další vlákna před ním ve frontě čekání, aby mohlo dříve znovu získat zámek. Vlákno může otestovat návratovou hodnotu metody Wait a určit, zda zámek znovu získalo před vypršením časového limitu. Vlákno může vyhodnotit podmínky, které způsobily, že vstoupilo do čekání, a v případě potřeby znovu zavolat metodu Wait.
Při volání Waitvlákna uvolní zámek objektu a přejde do fronty čekání objektu. Další vlákno ve frontě připravené pro objekt (pokud existuje) získá zámek a má výhradní použití objektu. Vlákno, které vyvolalo Wait , zůstává ve frontě čekání, dokud buď vlákno, které obsahuje zámek vyvolá PulseAll, nebo je to další ve frontě a vlákno, které obsahuje zámek vyvolá Pulse. Pokud však uplyne millisecondsTimeout dříve, než jiné vlákno vyvolá metodu tohoto objektu Pulse nebo PulseAll, původní vlákno se přesune do připravené fronty, aby znovu získalo zámek.
Note
Je-li parametr Infinite zadán pro millisecondsTimeout, tato metoda blokuje neomezeně dlouho, pokud držitel zámku nezavolá Pulse nebo PulseAll. Pokud millisecondsTimeout se rovná 0, vlákno, které volá Wait, uvolní zámek a okamžitě vstoupí do fronty připravenosti, aby zámek znovu získalo.
Volající se spustí Wait jednou bez ohledu na počet vyvolání Enter zadaného objektu. Koncepčně metoda Wait ukládá počet, kolikrát volající vyvolal Enter na objektu, a volá Exit tolikrát, kolikrát je potřeba k úplnému uvolnění uzamčeného objektu. Volající pak zablokuje svojí činnost a čeká na opětovné získání objektu. Když volající znovu získá zámek, systém zavolá Enter tolikrát, kolikrát je nutné k obnovení uložené hodnoty Enter. Volání Wait uvolní zámek pouze pro zadaný objekt. Pokud je volající vlastníkem zámků u jiných objektů, tyto zámky se nevyvolají.
Note
Synchronizovaný objekt obsahuje několik odkazů, včetně odkazu na vlákno, které aktuálně obsahuje zámek, odkaz na připravenou frontu, která obsahuje vlákna připravená k získání zámku, a odkaz na čekající frontu, která obsahuje vlákna čekající na oznámení o změně ve stavu objektu.
, PulsePulseAlla Wait metody musí být vyvolány z synchronizovaného bloku kódu.
Poznámky k metodě Pulse vysvětlují, co se stane, když se Pulse volá, když žádná vlákna nečekají.
Viz také
Platí pro
Wait(Object, TimeSpan)
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
Uvolní zámek objektu a zablokuje aktuální vlákno, dokud ho znovu nenasadí. Pokud zadaný interval časového limitu uplynul, vlákno přejde do připravené fronty.
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
Parametry
- obj
- Object
Objekt, na kterém se má čekat.
Návraty
true byl-li zámek znovu vyzván před uplynutím zadaného času; false pokud se zámek po uplynutí zadaného času znovu vynutil. Metoda se nevrátí, dokud se zámek neobsadí.
- Atributy
Výjimky
Parametr obj je null.
Volající vlákno nevlastní zámek pro zadaný objekt.
Vlákno, které se vyvolá Wait , se později přeruší ze stavu čekání. K tomu dochází, když jiné vlákno volá metodu Interrupt() tohoto vlákna.
Hodnota parametru timeout v milisekundách je záporná a nepředstavuje Infinite (-1 milisekund) nebo je větší než Int32.MaxValue.
Poznámky
Tato metoda se nevrátí, dokud nezíská výhradní zámek na parametru obj.
Vlákno, které aktuálně vlastní zámek u zadaného objektu, vyvolá tuto metodu, aby uvolnilo objekt, aby k němu mohlo přistupovat jiné vlákno. Volající je blokován při čekání na opětovné získání zámku. Tato metoda se volá, když volající potřebuje počkat na změnu stavu, která nastane v důsledku operací jiného vlákna.
Časový limit zajišťuje, že aktuální vlákno neblokuje neomezeně dlouho, pokud jiné vlákno uvolní zámek bez prvního volání Pulse nebo PulseAll metody. Vlákno také přesune do připravené fronty, obcházejíc tím další vlákna před ním ve frontě čekání, aby mohlo dříve znovu získat zámek. Vlákno může otestovat návratovou hodnotu metody Wait a určit, zda zámek znovu získalo před vypršením časového limitu. Vlákno může vyhodnotit podmínky, které způsobily, že vstoupilo do čekání, a v případě potřeby znovu zavolat metodu Wait.
Při volání Waitvlákna uvolní zámek objektu a přejde do fronty čekání objektu. Další vlákno ve frontě připravené pro objekt (pokud existuje) získá zámek a má výhradní použití objektu. Vlákno, které vyvolalo Wait , zůstává ve frontě čekání, dokud buď vlákno, které obsahuje zámek vyvolá PulseAll, nebo je to další ve frontě a vlákno, které obsahuje zámek vyvolá Pulse. Pokud však uplyne timeout dříve, než jiné vlákno vyvolá metodu tohoto objektu Pulse nebo PulseAll, původní vlákno se přesune do připravené fronty, aby znovu získalo zámek.
Note
Pokud je pro parametr TimeSpan zadána reprezentace timeout jako -1 milisekund, tato metoda zablokuje na neurčito, pokud držitel zámku nezavolá Pulse nebo PulseAll. Pokud timeout je 0 milisekund, vlákno, které volá Wait, uvolní zámek a okamžitě vstoupí do připravené fronty připravenosti, aby znovu získalo zámek.
Volající se spustí Wait jednou bez ohledu na počet vyvolání Enter zadaného objektu. Koncepčně metoda Wait ukládá počet, kolikrát volající vyvolal Enter na objektu, a volá Exit tolikrát, kolikrát je potřeba k úplnému uvolnění uzamčeného objektu. Volající pak zablokuje svojí činnost a čeká na opětovné získání objektu. Když volající znovu získá zámek, systém zavolá Enter tolikrát, kolikrát je nutné k obnovení uložené hodnoty Enter. Volání Wait uvolní zámek pouze pro zadaný objekt. Pokud je volající vlastníkem zámků u jiných objektů, tyto zámky se nevyvolají.
Note
Synchronizovaný objekt obsahuje několik odkazů, včetně odkazu na vlákno, které aktuálně obsahuje zámek, odkaz na připravenou frontu, která obsahuje vlákna připravená k získání zámku, a odkaz na čekající frontu, která obsahuje vlákna čekající na oznámení o změně ve stavu objektu.
, PulsePulseAlla Wait metody musí být vyvolány z synchronizovaného bloku kódu.
Poznámky k metodě Pulse vysvětlují, co se stane, když se Pulse volá, když žádná vlákna nečekají.
Viz také
Platí pro
Wait(Object, TimeSpan, Boolean)
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
- Zdroj:
- Monitor.cs
Uvolní zámek objektu a zablokuje aktuální vlákno, dokud ho znovu nenasadí. Pokud zadaný interval časového limitu uplynul, vlákno přejde do připravené fronty. Volitelně ukončí synchronizační doménu pro synchronizovaný kontext před čekáním a následně ji znovu vyžádá.
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
Parametry
- obj
- Object
Objekt, na kterém se má čekat.
- exitContext
- Boolean
trueukončit a znovu požádat synchronizační doménu pro kontext (pokud je v synchronizovaném kontextu) před čekáním; v opačném případě . false
Návraty
true byl-li zámek znovu vyzván před uplynutím zadaného času; false pokud se zámek po uplynutí zadaného času znovu vynutil. Metoda se nevrátí, dokud se zámek neobsadí.
- Atributy
Výjimky
Parametr obj je null.
Wait není vyvolána z synchronizovaného bloku kódu.
Vlákno, které vyvolá čekání, se později přeruší ze stavu čekání. K tomu dochází, když jiné vlákno volá metodu Interrupt() tohoto vlákna.
Parametr timeout je záporný a nepředstavuje Infinite (-1 milisekund) nebo je větší než Int32.MaxValue.
Poznámky
Další informace o tomto rozhraní API naleznete v tématu Doplňkové poznámky k rozhraní API pro Monitor.Wait.