ReaderWriterLockSlim.TryEnterUpgradeableReadLock Metoda

Definice

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

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.

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.

Platí pro