ReaderWriterLockSlim.TryEnterUpgradeableReadLock 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í.
Pokusí se přejít na zámek v upgradovatelném režimu s volitelným vypršením časového limitu.
Přetížení
TryEnterUpgradeableReadLock(Int32) |
Pokusí se přejít na zámek v upgradovatelném režimu s volitelným vypršením časového limitu. |
TryEnterUpgradeableReadLock(TimeSpan) |
Pokusí se přejít na zámek v upgradovatelném režimu s volitelným vypršením časového limitu. |
TryEnterUpgradeableReadLock(Int32)
- Zdroj:
- ReaderWriterLockSlim.cs
- Zdroj:
- ReaderWriterLockSlim.cs
- Zdroj:
- ReaderWriterLockSlim.cs
Pokusí se přejít na zámek v upgradovatelném režimu s volitelným vypršením časového limitu.
public:
bool TryEnterUpgradeableReadLock(int millisecondsTimeout);
public bool TryEnterUpgradeableReadLock (int millisecondsTimeout);
member this.TryEnterUpgradeableReadLock : int -> bool
Public Function TryEnterUpgradeableReadLock (millisecondsTimeout As Integer) As Boolean
Parametry
- millisecondsTimeout
- Int32
Počet milisekund, které se mají čekat, nebo -1 (Infinite) čekat na neomezenou dobu.
Návraty
true
pokud volající vlákno přešlo do upgradovatelného režimu, v opačném případě . false
Výjimky
Vlastnost RecursionPolicy je NoRecursion a aktuální vlákno již vstoupilo do zámku.
-nebo-
Aktuální vlákno původně vstoupilo do zámku v režimu čtení, a proto pokus o přechod do upgradovatelného režimu by vytvořil možnost vzájemného zablokování.
-nebo-
Číslo rekurze by překročilo kapacitu čítače. Limit je tak velký, že by ho aplikace nikdy neměly narazit.
Hodnota millisecondsTimeout
je záporná, ale nerovná se Infinite (-1), což je jediná povolená záporná hodnota.
Objekt ReaderWriterLockSlim byl odstraněn.
Poznámky
Pokud millisecondsTimeout
je hodnota 0 (nula), tato metoda zkontroluje stav uzamčení a vrátí false
okamžitě, pokud požadovaný stav není k dispozici.
Upgradovatelný režim použijte, pokud vlákno obvykle přistupuje k prostředku, který je chráněný ReaderWriterLockSlim v režimu čtení, ale může být nutné přejít do režimu zápisu, pokud jsou splněny určité podmínky. Vlákno v upgradovatelném režimu může upgradovat do režimu zápisu nebo downgradovat do režimu čtení.
V daném okamžiku může v upgradovatelném režimu vstoupit do zámku pouze jedno vlákno. Pokud je vlákno v upgradovatelném režimu a na přechod do režimu zápisu nečekají žádná vlákna, může do režimu čtení přejít libovolný počet dalších vláken, a to i v případě, že jsou vlákna čekající na přechod do upgradovatelného režimu.
Pokud jedno nebo více vláken čeká na vstup do režimu zápisu, vlákno, které volá metodu TryEnterUpgradeableReadLock blokuje, dokud tato vlákna buď nevyprší časový limit nebo nepřejdou do režimu zápisu a pak se z něj ukončí, nebo dokud nevyprší časový limit vlastního časového limitu volajícího vlákna.
Poznámka
Pokud zámek umožňuje rekurzi, vlákno, které zadalo zámek v upgradovatelném režimu, může přejít do upgradovatelného režimu rekurzivně, i když jiná vlákna čekají na přechod do režimu zápisu.
Platí pro
TryEnterUpgradeableReadLock(TimeSpan)
- Zdroj:
- ReaderWriterLockSlim.cs
- Zdroj:
- ReaderWriterLockSlim.cs
- Zdroj:
- ReaderWriterLockSlim.cs
Pokusí se přejít na zámek v upgradovatelném režimu s volitelným vypršením časového limitu.
public:
bool TryEnterUpgradeableReadLock(TimeSpan timeout);
public bool TryEnterUpgradeableReadLock (TimeSpan timeout);
member this.TryEnterUpgradeableReadLock : TimeSpan -> bool
Public Function TryEnterUpgradeableReadLock (timeout As TimeSpan) As Boolean
Parametry
- timeout
- TimeSpan
Interval čekání nebo -1 milisekundy čekání na neomezenou dobu.
Návraty
true
pokud volající vlákno přešlo do upgradovatelného režimu, v opačném případě . false
Výjimky
Vlastnost RecursionPolicy je NoRecursion a aktuální vlákno již vstoupilo do zámku.
-nebo-
Aktuální vlákno původně vstoupilo do zámku v režimu čtení, a proto pokus o přechod do upgradovatelného režimu by vytvořil možnost vzájemného zablokování.
-nebo-
Číslo rekurze by překročilo kapacitu čítače. Limit je tak velký, že by ho aplikace nikdy neměly narazit.
Hodnota timeout
je záporná, ale nerovná se -1 milisekund, což je jediná záporná hodnota povolená.
-nebo-
Hodnota je timeout
větší než Int32.MaxValue v milisekundách.
Objekt ReaderWriterLockSlim byl odstraněn.
Poznámky
Pokud timeout
je hodnota 0 (nula), tato metoda zkontroluje stav uzamčení a vrátí false
okamžitě, pokud požadovaný stav není k dispozici.
Upgradovatelný režim použijte, pokud vlákno obvykle přistupuje k prostředku chráněnému ReaderWriterLockSlim nástrojem v režimu čtení, ale může být nutné přejít do režimu zápisu, pokud jsou splněny určité podmínky. Vlákno v upgradovatelném režimu může upgradovat do režimu zápisu nebo downgradovat do režimu čtení.
V daném okamžiku může v upgradovatelném režimu vstoupit do zámku pouze jedno vlákno. Pokud je vlákno v upgradovatelném režimu a na přechod do režimu zápisu nečekají žádná vlákna, může do režimu čtení přejít libovolný počet dalších vláken, a to i v případě, že jsou vlákna čekající na přechod do upgradovatelného režimu.
Pokud jedno nebo více vláken čeká na vstup do režimu zápisu, vlákno, které volá metodu TryEnterUpgradeableReadLock blokuje, dokud tato vlákna buď nevyprší časový limit nebo nepřejdou do režimu zápisu a pak se z něj ukončí, nebo dokud nevyprší časový limit vlastního časového limitu volajícího vlákna.
Poznámka
Pokud zámek umožňuje rekurzi, vlákno, které zadalo zámek v upgradovatelném režimu, může přejít do upgradovatelného režimu rekurzivně, i když jiná vlákna čekají na přechod do režimu zápisu.