ReaderWriterLockSlim.ExitReadLock Metoda

Definicja

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.

Dotyczy