Nyelv

ReaderWriterLockSlim.ExitReadLock Metódus

Definíció

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

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

Kivételek

Az aktuális szál nem olvasá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 ExitReadLock metódus végrehajtásához, biztosítva, hogy a hívó kilépjen az olvasási módból. A példában látható metódus lekéri a kulcshoz társított értéket. Ha a kulcs nem található, a belső Dictionary<TKey,TValue> által kibocsátott kivétel megszakíthatja a metódust. A EnterReadLock metódus az olvasási mód megadására szolgál.

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 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

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 olvasá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: