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 režimu upgradu s volitelným vypršením časového limitu.
Přetížení
| Name | Description |
|---|---|
| TryEnterUpgradeableReadLock(Int32) |
Pokusí se přejít na zámek v režimu upgradu s volitelným vypršením časového limitu. |
| TryEnterUpgradeableReadLock(TimeSpan) |
Pokusí se přejít na zámek v režimu upgradu s volitelným vypršením časového limitu. |
TryEnterUpgradeableReadLock(Int32)
- Zdroj:
- ReaderWriterLockSlim.cs
- Zdroj:
- ReaderWriterLockSlim.cs
- Zdroj:
- ReaderWriterLockSlim.cs
- Zdroj:
- ReaderWriterLockSlim.cs
- Zdroj:
- ReaderWriterLockSlim.cs
Pokusí se přejít na zámek v režimu upgradu 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í počkat, nebo -1 (Infinite) na neomezenou dobu.
Návraty
true pokud volající vlákno vstoupilo do režimu upgradu, jinak , false.
Výjimky
Vlastnost RecursionPolicy je NoRecursion a aktuální vlákno již bylo zadáno zámek.
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 zablokování.
nebo
Číslo rekurze by překročilo kapacitu čítače. Limit je tak velký, že by se na ni aplikace nikdy neměly setkat.
Hodnota je záporná millisecondsTimeout , ale nerovná se Infinite (-1), což je jediná záporná hodnota povolená.
Objekt ReaderWriterLockSlim byl odstraněn.
Poznámky
Pokud millisecondsTimeout je 0 (nula), tato metoda zkontroluje stav zámku a vrátí false okamžitě, pokud požadovaný stav není k dispozici.
Režim upgradu použijte, když vlákno obvykle přistupuje k prostředku chráněnému 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 na režim zápisu nebo downgradovat na režim čtení.
V daném okamžiku může zámek v upgradovatelném režimu zadat pouze jedno vlákno. Pokud je vlákno v režimu upgradu a neexistují žádná vlákna čekající na vstup do režimu zápisu, může jakýkoli počet dalších vláken vstoupit do režimu čtení, i když existují vlákna čekající na přechod do režimu upgradu.
Pokud jedno nebo více vláken čeká na vstup do režimu zápisu, vlákno, které volá TryEnterUpgradeableReadLock metodu bloky, dokud tyto vlákna buď vypršel časový limit, nebo vstoupil do režimu zápisu a poté se z něj ukončí, nebo dokud nevyprší časový limit volajícího vlákna.
Note
Pokud zámek umožňuje rekurzi, vlákno, které vstoupilo do zámku v upgradovatelném režimu, může rekurzivně vstoupit do režimu upgradu, i když ostatní vlákna čekají na vstup do režimu zápisu.
Platí pro
TryEnterUpgradeableReadLock(TimeSpan)
- Zdroj:
- ReaderWriterLockSlim.cs
- Zdroj:
- ReaderWriterLockSlim.cs
- Zdroj:
- ReaderWriterLockSlim.cs
- Zdroj:
- ReaderWriterLockSlim.cs
- Zdroj:
- ReaderWriterLockSlim.cs
Pokusí se přejít na zámek v režimu upgradu 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, aby se čekalo neomezeně dlouho.
Návraty
true pokud volající vlákno vstoupilo do režimu upgradu, jinak , false.
Výjimky
Vlastnost RecursionPolicy je NoRecursion a aktuální vlákno již bylo zadáno zámek.
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 zablokování.
nebo
Číslo rekurze by překročilo kapacitu čítače. Limit je tak velký, že by se na ni aplikace nikdy neměly setkat.
Hodnota je záporná timeout , ale nerovná se -1 milisekund, což je jediná záporná hodnota povolená.
nebo
Hodnota timeout je větší než Int32.MaxValue milisekund.
Objekt ReaderWriterLockSlim byl odstraněn.
Poznámky
Pokud timeout je 0 (nula), tato metoda zkontroluje stav zámku a vrátí false okamžitě, pokud požadovaný stav není k dispozici.
Režim upgradu použijte, když vlákno obvykle přistupuje k prostředku chráněnému 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 na režim zápisu nebo downgradovat na režim čtení.
V daném okamžiku může zámek v upgradovatelném režimu zadat pouze jedno vlákno. Pokud je vlákno v režimu upgradu a neexistují žádná vlákna čekající na vstup do režimu zápisu, může jakýkoli počet dalších vláken vstoupit do režimu čtení, i když existují vlákna čekající na přechod do režimu upgradu.
Pokud jedno nebo více vláken čeká na vstup do režimu zápisu, vlákno, které volá TryEnterUpgradeableReadLock metodu bloky, dokud tyto vlákna buď vypršel časový limit, nebo vstoupil do režimu zápisu a poté se z něj ukončí, nebo dokud nevyprší časový limit volajícího vlákna.
Note
Pokud zámek umožňuje rekurzi, vlákno, které vstoupilo do zámku v upgradovatelném režimu, může rekurzivně vstoupit do režimu upgradu, i když ostatní vlákna čekají na vstup do režimu zápisu.