ReaderWriterLockSlim.ExitWriteLock 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 zápisu a ukončí režim zápisu, pokud je výsledný počet 0 (nula).
public:
void ExitWriteLock();
public void ExitWriteLock();
member this.ExitWriteLock : unit -> unit
Public Sub ExitWriteLock ()
Výjimky
Aktuální vlákno nezadali zámek v režimu zápisu.
Příklady
Následující příklad ukazuje, jak pomocí finally bloku provést metodu ExitWriteLock a zajistit, že volající ukončí režim zápisu. Metoda zobrazená v příkladu přidá do synchronizované mezipaměti novou dvojici klíč/hodnota. Pokud je klíč již v mezipaměti, výjimka vyvolaná vnitřním Dictionary<TKey,TValue> objektem je povolena ukončit metodu. Metoda EnterWriteLock se používá k zadání zámku v režimu zápisu.
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 void Add(int key, string value)
{
cacheLock.EnterWriteLock();
try
{
innerCache.Add(key, value);
}
finally
{
cacheLock.ExitWriteLock();
}
}
Public Sub Add(ByVal key As Integer, ByVal value As String)
cacheLock.EnterWriteLock()
Try
innerCache.Add(key, value)
Finally
cacheLock.ExitWriteLock()
End Try
End Sub
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 režimu zápisu, 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.