ReaderWriterLockSlim.TryEnterUpgradeableReadLock Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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.