ReaderWriterLockSlim.ExitWriteLock Metod

Definition

Minskar rekursionsantalet för skrivläge och avslutar skrivläget om det resulterande antalet är 0 (noll).

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

Undantag

Den aktuella tråden har inte angett låset i skrivläge.

Exempel

I följande exempel visas hur du använder ett finally block för att köra ExitWriteLock metoden, vilket säkerställer att anroparen avslutar skrivläget. Metoden som visas i exemplet lägger till ett nytt nyckel/värde-par i den synkroniserade cachen. Om nyckeln redan finns i cacheminnet tillåts undantaget som genereras av det inre Dictionary<TKey,TValue> att avsluta metoden. Metoden EnterWriteLock används för att ange låset i skrivläge.

Den här koden är en del av ett större exempel som tillhandahålls ReaderWriterLockSlim för klassen.

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

Kommentarer

Den här metoden är inte känslig för rekursionsordning. Om en tråd till exempel går in i ett lås i uppgraderingsbart läge och sedan går in i låset i skrivläge spelar det ingen roll i vilken ordning tråden avslutar de två lägena. Om ett lås tillåter rekursion kan en tråd ange låset i skrivläge och sedan ange det rekursivt i läsläge. i vilken ordning tråden avslutar läsläge och skrivläge spelar ingen roll.

Om låset avslutas kan andra väntande trådar signaleras.

Gäller för