ReaderWriterLockSlim.EnterWriteLock Méthode

Définition

Tente d’entrer le verrou en mode écriture.

public:
 void EnterWriteLock();
public void EnterWriteLock();
member this.EnterWriteLock : unit -> unit
Public Sub EnterWriteLock ()

Exceptions

La RecursionPolicy propriété est NoRecursion et le thread actuel a déjà entré le verrou dans n’importe quel mode.

-ou-

Le thread actuel est entré en mode lecture et ne possède pas encore de verrou d’écriture. Par conséquent, la tentative d’entrer dans le verrou en mode écriture créerait la possibilité d’un interblocage.

-ou-

Le nombre de récursivité dépasse la capacité du compteur. La limite est si grande que les applications ne doivent jamais les rencontrer.

L’objet ReaderWriterLockSlim a été supprimé.

Exemples

L’exemple suivant montre comment utiliser la EnterWriteLock méthode pour entrer le verrou en mode écriture. La méthode illustrée dans l’exemple ajoute une nouvelle paire clé/valeur au cache synchronisé. Si la clé se trouve déjà dans le cache, l’exception levée par l’interne Dictionary<TKey,TValue> est autorisée à arrêter la méthode. Un finally bloc est utilisé pour exécuter la ExitWriteLock méthode, ce qui garantit que l’appelant quitte le mode d’écriture.

Ce code fait partie d’un exemple plus large fourni pour la 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

Remarques

Cette méthode bloque jusqu’à ce que le thread appelant entre dans le verrou et ne puisse donc jamais retourner. Utilisez la TryEnterWriteLock méthode pour bloquer un intervalle spécifié, puis retournez si le thread appelant n’a pas entré en mode d’écriture pendant cet intervalle.

Si d’autres threads ont entré le verrou en mode lecture, un thread qui appelle les EnterWriteLock blocs de méthode jusqu’à ce que ces threads aient quitté le mode lecture. Lorsqu’il existe des threads en attente d’entrer en mode écriture, des threads supplémentaires qui essaient d’entrer en mode lecture ou en mode mis à niveau jusqu’à ce que tous les threads en attente d’entrer en mode écriture aient expiré ou entré en mode écriture, puis se sont arrêtés.

Note

Si un verrou autorise la récursivité, un thread qui a entré le verrou en mode écriture peut entrer en mode écriture de manière récursive, même si d’autres threads attendent d’entrer en mode écriture.

S’applique à