ReaderWriterLockSlim.EnterWriteLock Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.