Sdílet prostřednictvím


ReaderWriterLockSlim.ExitReadLock Metoda

Definice

Sníží počet rekurzí v režimu čtení a ukončí režim čtení, pokud je výsledný počet 0 (nula).

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

Výjimky

Aktuální vlákno nevstoupilo do zámku v režimu čtení.

Příklady

Následující příklad ukazuje, jak použít finally blok ke spuštění ExitReadLock metody, čímž se zajistí, že volající ukončí režim čtení. Metoda uvedená v příkladu načte hodnotu přidruženou ke klíči. Pokud klíč není nalezen, výjimka vyvolaná vnitřní Dictionary<TKey,TValue> je povoleno ukončit metodu. Metoda EnterReadLock se používá k přechodu do režimu čtení.

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 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

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 čtení, 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