ReaderWriterLockSlim.ExitReadLock Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Sníží počet rekurzí pro režim čtení a ukončí režim čtení, pokud je výsledný počet 0 (nula).
public:
void ExitReadLock();
public void ExitReadLock();
member this.ExitReadLock : unit -> unit
Public Sub ExitReadLock ()
Výjimky
Aktuální vlákno nezadali zámek v režimu čtení.
Příklady
Následující příklad ukazuje, jak pomocí finally bloku spustit metodu ExitReadLock a zajistit, že volající ukončí režim čtení. Metoda zobrazená v příkladu načte hodnotu přidruženou ke klíči. Pokud se klíč nenajde, je povolena výjimka vyvolaná vnitřní Dictionary<TKey,TValue> metodou ukončit. Metoda EnterReadLock se používá k přechodu do režimu čtení.
Tento kód je součástí většího příkladu poskytovaného ReaderWriterLockSlim pro třídu.
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
Poznámky
Tato metoda není citlivá na pořadí rekurze. Pokud například vlákno přejde do zámku v režimu upgradu a pak vstoupí do zámku v režimu čtení, pořadí, ve kterém vlákno ukončí oba režimy, nezáleží. Pokud zámek umožňuje rekurze, vlákno může vstoupit do zámku v režimu zápisu a pak ho rekurzivně zadat v režimu čtení; pořadí, ve kterém vlákno ukončí režim čtení a režim zápisu, nezáleží.
Ukončení zámku může signalizovat další čekající vlákna.