ReaderWriterLockSlim.ExitWriteLock Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Reduz a contagem de recursão para o modo de gravação e sai do modo de gravação se a contagem resultante é 0 (zero).
public:
void ExitWriteLock();
public void ExitWriteLock ();
member this.ExitWriteLock : unit -> unit
Public Sub ExitWriteLock ()
Exceções
O thread atual não entrou no bloqueio em modo de gravação.
Exemplos
O exemplo a seguir mostra como usar um finally
bloco para executar o ExitWriteLock método, garantindo que o chamador saia do modo de gravação. O método mostrado no exemplo adiciona um novo par chave/valor ao cache sincronizado. Se a chave já estiver no cache, a exceção gerada pelo interior Dictionary<TKey,TValue> poderá encerrar o método. O EnterWriteLock método é usado para inserir o bloqueio no modo de gravação.
Esse código faz parte de um exemplo maior fornecido para a ReaderWriterLockSlim classe.
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
Comentários
Esse método não é sensível à ordem de recursão. Por exemplo, se um thread entra em um bloqueio no modo atualizável e, em seguida, entra no bloqueio no modo de gravação, a ordem na qual o thread sai dos dois modos não importa. Se um bloqueio permitir a recursão, um thread poderá inserir o bloqueio no modo de gravação e inseri-lo recursivamente no modo de leitura; a ordem na qual o thread sai do modo de leitura e o modo de gravação não importa.
Sair do bloqueio pode sinalizar outros threads de espera.