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í v režimu č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 nevstoupilo do zámku v režimu čtení.
Příklady
Následující příklad ukazuje, jak použít finally
blok ke spuštění ExitReadLock metody, čímž se zajistí, že volající ukončí režim čtení. Metoda uvedená v příkladu načte hodnotu přidruženou ke klíči. Pokud klíč není nalezen, výjimka vyvolaná vnitřní Dictionary<TKey,TValue> je povoleno ukončit metodu. Metoda EnterReadLock se používá k přechodu do režimu čtení.
Tento kód je součástí většího příkladu 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 na zámek v upgradovatelném režimu a pak přejde do režimu čtení, nezáleží na pořadí, ve kterém vlákno ukončí oba režimy. Pokud zámek umožňuje rekurze, vlákno může vstoupit do zámku v režimu zápisu a poté jej zadat rekurzivně 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.