Nyelv

ReaderWriterLockSlim.ExitWriteLock Metódus

Definíció

Csökkenti az írási mód rekurziós számát, és kilép az írási módból, ha az eredményül kapott szám 0 (nulla).

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

Kivételek

Az aktuális szál nem írási módban lépett be a zárolásba.

Példák

Az alábbi példa bemutatja, hogyan lehet blokkot finally használni a ExitWriteLock metódus végrehajtásához, biztosítva, hogy a hívó kilépjen az írási módból. A példában látható metódus új kulcs-érték párokat ad hozzá a szinkronizált gyorsítótárhoz. Ha a kulcs már szerepel a gyorsítótárban, a belső Dictionary<TKey,TValue> által okozott kivétel megszakíthatja a metódust. Ezzel EnterWriteLock a módszerrel írható módban lehet belépni a zárolásba.

Ez a kód egy nagyobb, az ReaderWriterLockSlim osztályhoz tartozó példa része.

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

Megjegyzések

Ez a módszer nem érzékeny a rekurziós sorrendre. Ha például egy szál frissíthető módban lép be egy zárba, majd írási módban adja meg a zárolást, az a sorrend, amelyben a szál kilép a két módból, nem számít. Ha a zárolás lehetővé teszi a rekurziót, a szálak írási módban léphetnek be a zárolásba, majd rekurzívan beírhatják olvasási módban; az a sorrend, amelyben a szál kilép az olvasási és írási módból, nem számít.

A zárolásból való kilépés más várakozási szálakat is jelezhet.

A következőre érvényes: