ReaderWriterLockSlim.ExitReadLock Methode

Definitie

Vermindert het aantal recursie voor de leesmodus en sluit de leesmodus af als het resulterende aantal 0 (nul) is.

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

Uitzonderingen

De huidige thread heeft de vergrendeling niet ingevoerd in de leesmodus.

Voorbeelden

In het volgende voorbeeld ziet u hoe u een finally blok gebruikt om de methode uit te voeren, zodat de aanroeper de ExitReadLock leesmodus verlaat. Met de methode die in het voorbeeld wordt weergegeven, wordt de waarde opgehaald die is gekoppeld aan een sleutel. Als de sleutel niet wordt gevonden, mag de uitzondering die door de binnenste Dictionary<TKey,TValue> wordt gegenereerd, de methode beƫindigen. De EnterReadLock methode wordt gebruikt om de leesmodus in te voeren.

Deze code maakt deel uit van een groter voorbeeld voor de ReaderWriterLockSlim klasse.

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

Opmerkingen

Deze methode is niet gevoelig voor recursievolgorde. Als een thread bijvoorbeeld een vergrendeling in de upgradebare modus binnengaat en vervolgens de vergrendeling in de leesmodus invoert, maakt de volgorde waarin de thread de twee modi sluit niet uit. Als een vergrendeling recursie toestaat, kan een thread de vergrendeling in de schrijfmodus invoeren en deze recursief invoeren in de leesmodus; de volgorde waarin de thread de leesmodus verlaat en de schrijfmodus niet uitmaakt.

Het afsluiten van de vergrendeling kan duiden op andere wachtende threads.

Van toepassing op