ReaderWriterLockSlim.ExitWriteLock Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Reduz a contagem de recursão para o modo de escrita e sai do modo de escrita se a contagem resultante for 0 (zero).
public:
void ExitWriteLock();
public void ExitWriteLock();
member this.ExitWriteLock : unit -> unit
Public Sub ExitWriteLock ()
Exceções
A thread atual não entrou no bloqueio em modo de escrita.
Exemplos
O exemplo seguinte mostra como usar um finally bloco para executar o ExitWriteLock método, garantindo que o chamador sai do modo de escrita. O método mostrado no exemplo adiciona um novo par chave/valor à cache sincronizada. Se a chave já estiver na cache, a exceção lançada pelo interior Dictionary<TKey,TValue> pode terminar o método. O EnterWriteLock método é usado para entrar no bloqueio em modo de escrita.
Este código faz parte de um exemplo mais amplo fornecido para a ReaderWriterLockSlim turma.
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
Observações
Este método não é sensível à ordem de recursão. Por exemplo, se uma thread entra num bloqueio em modo atualizável e depois entra no bloqueio em modo de escrita, a ordem em que a thread sai dos dois modos não importa. Se um bloqueio permitir recursão, um thread pode entrar no bloqueio em modo de escrita e depois entrar nele recursivamente em modo de leitura; A ordem em que a thread sai do modo de leitura e do modo de escrita não importa.
Sair do bloqueio pode sinalizar outros threads à espera.