ReaderWriterLockSlim.ExitReadLock Metoda

Definice

Sníží počet rekurzí pro režim č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 nezadali zámek v režimu čtení.

Příklady

Následující příklad ukazuje, jak pomocí finally bloku spustit metodu ExitReadLock a zajistit, že volající ukončí režim čtení. Metoda zobrazená v příkladu načte hodnotu přidruženou ke klíči. Pokud se klíč nenajde, je povolena výjimka vyvolaná vnitřní Dictionary<TKey,TValue> metodou ukončit. Metoda EnterReadLock se používá k přechodu do režimu čtení.

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 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 do zámku v režimu upgradu a pak vstoupí do zámku v režimu čtení, 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