Sdílet prostřednictvím


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 nevstoupilo do zámku v režimu zápisu.

Příklady

Následující příklad ukazuje, jak použít finally blok ke spuštění ExitWriteLock metody a zajistit, že volající ukončí režim zápisu. Metoda uvedená v příkladu přidá do synchronizované mezipaměti nový pár klíč/hodnota. Pokud je klíč již v mezipaměti, výjimka vyvolaná vnitřním Dictionary<TKey,TValue> objektem může ukončit metodu . Metoda EnterWriteLock se používá k přechodu na zámek v režimu zápisu.

Tento kód je součástí většího příkladu 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 na zámek v upgradovatelném režimu a pak přejde do režimu zápisu, nezáleží na pořadí, ve kterém vlákno ukončí oba režimy. Pokud zámek umožňuje rekurze, vlákno může vstoupit do zámku v režimu zápisu a poté jej zadat rekurzivně 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