ReaderWriterLockSlim.ExitWriteLock 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 Schreibmodus und beendet den Schreibmodus, wenn das Rekursionsergebnis 0 (null) ist.
public:
void ExitWriteLock();
public void ExitWriteLock ();
member this.ExitWriteLock : unit -> unit
Public Sub ExitWriteLock ()
Ausnahmen
Der aktuelle Thread befindet sich nicht im Schreibmodus.
Beispiele
Das folgende Beispiel zeigt, wie Sie einen finally
Block verwenden, um die ExitWriteLock -Methode auszuführen, um sicherzustellen, dass der Aufrufer den Schreibmodus beendet. Die im Beispiel gezeigte Methode fügt dem synchronisierten Cache ein neues Schlüssel-Wert-Paar hinzu. Wenn sich der Schlüssel bereits im Cache befindet, kann die vom inneren Dictionary<TKey,TValue> ausgelöste Ausnahme die Methode beenden. Die EnterWriteLock -Methode wird verwendet, um die Sperre im Schreibmodus zu öffnen.
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 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
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 Schreibmodus 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.