ReaderWriterLockSlim.ExitWriteLock Metoda

Definice

Sníží počet rekurzí pro režim zápisu a ukončí režim zápisu, pokud je výsledný počet 0 (nula).

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

Výjimky

Aktuální vlákno nezadali zámek v režimu zápisu.

Příklady

Následující příklad ukazuje, jak pomocí finally bloku provést metodu ExitWriteLock a zajistit, že volající ukončí režim zápisu. Metoda zobrazená v příkladu přidá do synchronizované mezipaměti novou dvojici klíč/hodnota. Pokud je klíč již v mezipaměti, výjimka vyvolaná vnitřním Dictionary<TKey,TValue> objektem je povolena ukončit metodu. Metoda EnterWriteLock se používá k zadání zámku v režimu zápisu.

Tento kód je součástí většího příkladu poskytovaného ReaderWriterLockSlim pro třídu.

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

Poznámky

Tato metoda není citlivá na pořadí rekurze. Pokud například vlákno přejde do zámku v režimu upgradu a pak vstoupí do režimu zápisu, pořadí, ve kterém vlákno ukončí oba režimy, nezáleží. Pokud zámek umožňuje rekurze, vlákno může vstoupit do zámku v režimu zápisu a pak ho rekurzivně zadat v režimu čtení; pořadí, ve kterém vlákno ukončí režim čtení a režim zápisu, nezáleží.

Ukončení zámku může signalizovat další čekající vlákna.

Platí pro