Freigeben über


ReaderWriterLockSlim.ExitWriteLock Methode

Definition

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.

Gilt für: