Udostępnij za pośrednictwem


ReaderWriterLockSlim.ExitWriteLock Metoda

Definicja

Zmniejsza liczbę rekursji dla trybu zapisu i kończy tryb zapisu, jeśli wynikowa liczba wynosi 0 (zero).

public:
 void ExitWriteLock();
public void ExitWriteLock ();
member this.ExitWriteLock : unit -> unit
Public Sub ExitWriteLock ()

Wyjątki

Bieżący wątek nie wprowadził blokady w trybie zapisu.

Przykłady

W poniższym przykładzie pokazano, jak użyć finally bloku do wykonania ExitWriteLock metody, upewniając się, że obiekt wywołujący kończy tryb zapisu. Metoda pokazana w przykładzie dodaje nową parę klucz/wartość do zsynchronizowanej pamięci podręcznej. Jeśli klucz znajduje się już w pamięci podręcznej, wyjątek zgłoszony przez wewnętrzny Dictionary<TKey,TValue> może zakończyć metodę. Metoda EnterWriteLock służy do wprowadzania blokady w trybie zapisu.

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 void Add(int key, string value)
{
    cacheLock.EnterWriteLock();
    try
    {
        innerCache.Add(key, value);
    }
    finally
    {
        cacheLock.ExitWriteLock();
    }
}
Public Sub Add(ByVal key As Integer, ByVal value As String)
    cacheLock.EnterWriteLock()
    Try
        innerCache.Add(key, value)
    Finally
        cacheLock.ExitWriteLock()
    End Try
End Sub

Uwagi

Ta metoda nie jest wrażliwa na kolejność rekursji. Jeśli na przykład wątek wejdzie do blokady w trybie uaktualniania, a następnie wprowadzi blokadę w trybie zapisu, kolejność, w której wątek kończy działanie tych dwóch trybów, nie ma znaczenia. Jeśli blokada zezwala na rekursję, wątek może wprowadzić blokadę w trybie zapisu, a następnie wprowadzić go rekursywnie w trybie odczytu; kolejność, w jakiej wątek kończy tryb odczytu i tryb zapisu, nie ma znaczenia.

Wyjście z blokady może sygnalizuje inne wątki oczekujące.

Dotyczy