ReaderWriterLockSlim.ExitReadLock Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Verringert die Rekursionszahl für den Lesemodus und beendet den Lesemodus, wenn das Rekursionsergebnis 0 (null) ist.
public:
void ExitReadLock();
public void ExitReadLock ();
member this.ExitReadLock : unit -> unit
Public Sub ExitReadLock ()
Ausnahmen
Der aktuelle Thread befindet sich nicht im Lesemodus.
Beispiele
Das folgende Beispiel zeigt, wie Sie einen finally
Block verwenden, um die ExitReadLock -Methode auszuführen, um sicherzustellen, dass der Aufrufer den Lesemodus beendet. 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 nicht empfindlich für die Rekursionsreihenfolge. Wenn ein Thread beispielsweise im upgradefähigen Modus in eine Sperre wechselt und dann im Lesemodus in die Sperre wechselt, spielt die Reihenfolge, in der der Thread die beiden Modi beendet, keine Rolle. Wenn eine Sperre die Rekursion zulässt, kann ein Thread im Schreibmodus in die Sperre eintreten und sie dann rekursiv im Lesemodus eingeben. Die Reihenfolge, in der der Thread den Lese- und Schreibmodus beendet, spielt keine Rolle.
Das Beenden der Sperre kann andere wartenden Threads signalisieren.