ReaderWriterLockSlim.ExitReadLock Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.