Udostępnij za pośrednictwem


ReaderWriterLockSlim.TryEnterUpgradeableReadLock Metoda

Definicja

Próbuje wprowadzić blokadę w trybie uaktualniania z opcjonalnym limitem czasu.

Przeciążenia

TryEnterUpgradeableReadLock(Int32)

Próbuje wprowadzić blokadę w trybie uaktualniania z opcjonalnym limitem czasu.

TryEnterUpgradeableReadLock(TimeSpan)

Próbuje wprowadzić blokadę w trybie uaktualniania z opcjonalnym limitem czasu.

TryEnterUpgradeableReadLock(Int32)

Źródło:
ReaderWriterLockSlim.cs
Źródło:
ReaderWriterLockSlim.cs
Źródło:
ReaderWriterLockSlim.cs

Próbuje wprowadzić blokadę w trybie uaktualniania z opcjonalnym limitem czasu.

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

Liczba milisekund oczekiwania lub -1 (Infinite) oczekiwania na czas nieokreślony.

Zwraca

true jeśli wątek wywołujący wszedł w tryb uaktualniania, w przeciwnym razie false.

Wyjątki

Właściwość RecursionPolicy to NoRecursion , a bieżący wątek już wprowadził blokadę.

-lub-

Bieżący wątek początkowo wszedł do blokady w trybie odczytu i w związku z tym próba wprowadzenia trybu uaktualniania spowodowałoby możliwość zakleszczenia.

-lub-

Liczba rekursji przekroczyłaby pojemność licznika. Limit jest tak duży, że aplikacje nigdy nie powinny go napotkać.

Wartość millisecondsTimeout jest ujemna, ale nie jest równa Infinite (-1), która jest jedyną dozwoloną wartością ujemną.

Obiekt ReaderWriterLockSlim został usunięty.

Uwagi

Jeśli millisecondsTimeout wartość to 0 (zero), ta metoda sprawdza stan blokady i zwraca false natychmiast, jeśli żądany stan jest niedostępny.

Użyj trybu uaktualniania, gdy wątek zwykle uzyskuje dostęp do zasobu chronionego ReaderWriterLockSlim w trybie odczytu, ale może być konieczne wprowadzenie trybu zapisu, jeśli zostaną spełnione określone warunki. Wątek w trybie uaktualniania może uaktualnić do trybu zapisu lub obniżyć do trybu odczytu.

W danym momencie tylko jeden wątek może wprowadzić blokadę w trybie uaktualniania. Jeśli wątek jest w trybie uaktualniania i nie ma wątków oczekujących na przejście do trybu zapisu, dowolna liczba innych wątków może wejść w tryb odczytu, nawet jeśli wątki oczekują na przejście w tryb możliwy do uaktualnienia.

Jeśli co najmniej jeden wątek oczekuje na wejście w tryb zapisu, wątek, który wywołuje TryEnterUpgradeableReadLock bloki metody, dopóki te wątki nie upłynął limit czasu lub nie wszedł do trybu zapisu, a następnie wyszedł z niego lub do czasu wygaśnięcia własnego interwału limitu czasu wątku wywołującego.

Uwaga

Jeśli blokada zezwala na rekursję, wątek, który wprowadził blokadę w trybie uaktualniania, może cyklicznie przejść w tryb uaktualniania, nawet jeśli inne wątki czekają na przejście do trybu zapisu.

Dotyczy

TryEnterUpgradeableReadLock(TimeSpan)

Źródło:
ReaderWriterLockSlim.cs
Źródło:
ReaderWriterLockSlim.cs
Źródło:
ReaderWriterLockSlim.cs

Próbuje wprowadzić blokadę w trybie uaktualniania z opcjonalnym limitem czasu.

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

Interwał oczekiwania lub -1 milisekundy oczekiwania na czas nieokreślony.

Zwraca

true jeśli wątek wywołujący wszedł w tryb uaktualniania, w przeciwnym razie false.

Wyjątki

Właściwość RecursionPolicy to NoRecursion , a bieżący wątek już wprowadził blokadę.

-lub-

Bieżący wątek początkowo wszedł do blokady w trybie odczytu i w związku z tym próba wprowadzenia trybu uaktualniania spowodowałoby możliwość zakleszczenia.

-lub-

Liczba rekursji przekroczyłaby pojemność licznika. Limit jest tak duży, że aplikacje nigdy nie powinny go napotkać.

Wartość timeout jest ujemna, ale nie jest równa -1 milisekundom, która jest jedyną dozwoloną wartością ujemną.

-lub-

Wartość jest timeout większa niż Int32.MaxValue milisekund.

Obiekt ReaderWriterLockSlim został usunięty.

Uwagi

Jeśli timeout wartość to 0 (zero), ta metoda sprawdza stan blokady i zwraca false natychmiast, jeśli żądany stan jest niedostępny.

Użyj trybu uaktualniania, gdy wątek zwykle uzyskuje dostęp do zasobu chronionego ReaderWriterLockSlim przez tryb odczytu, ale może być konieczne wprowadzenie trybu zapisu, jeśli zostaną spełnione określone warunki. Wątek w trybie uaktualniania może uaktualnić do trybu zapisu lub obniżyć do trybu odczytu.

W danym momencie tylko jeden wątek może wprowadzić blokadę w trybie uaktualniania. Jeśli wątek jest w trybie uaktualniania i nie ma wątków oczekujących na przejście do trybu zapisu, dowolna liczba innych wątków może wejść w tryb odczytu, nawet jeśli wątki oczekują na przejście w tryb możliwy do uaktualnienia.

Jeśli co najmniej jeden wątek oczekuje na wejście w tryb zapisu, wątek, który wywołuje TryEnterUpgradeableReadLock bloki metody, dopóki te wątki nie upłynął limit czasu lub nie wszedł do trybu zapisu, a następnie wyszedł z niego lub do czasu wygaśnięcia własnego interwału limitu czasu wątku wywołującego.

Uwaga

Jeśli blokada zezwala na rekursję, wątek, który wprowadził blokadę w trybie uaktualniania, może cyklicznie przejść w tryb uaktualniania, nawet jeśli inne wątki czekają na przejście do trybu zapisu.

Dotyczy