ReaderWriterLockSlim.ExitReadLock Methode

Definition

Reduziert die Rekursionsanzahl für den Lesemodus und beendet den Lesemodus, wenn die resultierende Anzahl 0 (Null) ist.

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

Ausnahmen

Der aktuelle Thread hat die Sperre nicht im Lesemodus eingegeben.

Beispiele

Das folgende Beispiel zeigt, wie Sie einen finally Block zum Ausführen der ExitReadLock Methode verwenden und sicherstellen, dass der Aufrufer den Lesemodus verlässt. Die im Beispiel gezeigte Methode ruft den einem Schlüssel zugeordneten Wert ab. Wenn der Schlüssel nicht gefunden wird, kann die vom inneren Dictionary<TKey,TValue> Ausgelöste Ausnahme die Methode beenden. Die EnterReadLock Methode wird verwendet, um in den Lesemodus zu wechseln.

Dieser Code ist Teil eines größeren Beispiels, das für die ReaderWriterLockSlim Klasse bereitgestellt wird.

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

Hinweise

Diese Methode ist für rekursionsreihenfolge nicht vertraulich. Wenn z. B. ein Thread in einen Upgrademodus wechselt und dann in den Lesemodus wechselt, spielt die Reihenfolge, in der der Thread die beiden Modi verlässt, keine Rolle. Wenn eine Sperre rekursion zulässt, kann ein Thread die Sperre im Schreibmodus eingeben und dann rekursiv in den Lesemodus eingeben. Die Reihenfolge, in der der Thread den Lese- und Schreibmodus verlässt, spielt keine Rolle.

Das Beenden der Sperre signalisiert möglicherweise andere Wartethreads.

Gilt für: