ReaderWriterLockSlim.ExitWriteLock 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
減少寫入模式遞迴的計數,如果得出的計數為 0 (零),則結束寫入模式。
public:
void ExitWriteLock();
public void ExitWriteLock ();
member this.ExitWriteLock : unit -> unit
Public Sub ExitWriteLock ()
例外狀況
目前的執行緒尚未進入寫入模式的鎖定狀態。
範例
下列範例示範如何使用 finally
區塊來執行 ExitWriteLock 方法,以確保呼叫端結束寫入模式。 範例中顯示的 方法會將新的索引鍵/值組新增至同步快取。 如果索引鍵已經在快取中,內部擲回的 Dictionary<TKey,TValue> 例外狀況會允許終止 方法。 方法 EnterWriteLock 可用來在寫入模式中輸入鎖定。
此程式碼是類別所提供較大範例的 ReaderWriterLockSlim 一部分。
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
備註
這個方法對遞迴順序不敏感。 例如,如果執行緒在可升級模式中進入鎖定,然後在寫入模式中進入鎖定,則執行緒結束這兩種模式的順序並不重要。 如果鎖定允許遞迴,執行緒可以在寫入模式中進入鎖定,然後在讀取模式中以遞迴方式輸入它;執行緒結束讀取模式和寫入模式的順序並不重要。
結束鎖定可能會發出其他等候執行緒的訊號。