ReaderWriterLockSlim.ExitReadLock 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.
Zmniejsza liczbę rekursji dla trybu odczytu i zamyka tryb odczytu, jeśli wynikowa liczba jest równa 0 (zero).
public:
void ExitReadLock();
public void ExitReadLock ();
member this.ExitReadLock : unit -> unit
Public Sub ExitReadLock ()
Wyjątki
Bieżący wątek nie wprowadził blokady w trybie odczytu.
Przykłady
W poniższym przykładzie pokazano, jak za pomocą bloku wykonać metodę finally
ExitReadLock , upewniając się, że obiekt wywołujący kończy tryb odczytu. Metoda pokazana w przykładzie pobiera wartość skojarzona z kluczem. Jeśli klucz nie zostanie znaleziony, wyjątek zgłoszony przez wewnętrzny Dictionary<TKey,TValue> może zakończyć metodę. Metoda EnterReadLock służy do wprowadzania trybu odczytu.
Ten kod jest częścią większego przykładu udostępnionego ReaderWriterLockSlim dla klasy.
private ReaderWriterLockSlim cacheLock = new ReaderWriterLockSlim();
private Dictionary<int, string> innerCache = new Dictionary<int, string>();
Private cacheLock As New ReaderWriterLockSlim()
Private innerCache As New Dictionary(Of Integer, String)
public string Read(int key)
{
cacheLock.EnterReadLock();
try
{
return innerCache[key];
}
finally
{
cacheLock.ExitReadLock();
}
}
Public Function Read(ByVal key As Integer) As String
cacheLock.EnterReadLock()
Try
Return innerCache(key)
Finally
cacheLock.ExitReadLock()
End Try
End Function
Uwagi
Ta metoda nie jest wrażliwa na kolejność rekursji. Jeśli na przykład wątek wprowadza blokadę w trybie uaktualnialnym, a następnie wprowadza blokadę w trybie odczytu, kolejność, w której wątek kończy dwa tryby, nie ma znaczenia. Jeśli blokada zezwala na rekursję, wątek może wprowadzić blokadę w trybie zapisu, a następnie wprowadzić go cyklicznie w trybie odczytu; kolejność, w której wątek kończy tryb odczytu i tryb zapisu, nie ma znaczenia.
Zamknięcie blokady może sygnalizać inne wątki oczekujące.