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 ();

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>();
public void Add(int key, string value)
{
    cacheLock.EnterWriteLock();
    try
    {
        innerCache.Add(key, value);
    }
    finally
    {
        cacheLock.ExitWriteLock();
    }
}

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

Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0