ReaderWriterLockSlim.EnterReadLock Méthode

Définition

Tente d’entrer le verrou en mode lecture.

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

Exceptions

La RecursionPolicy propriété est NoRecursion, et le thread actuel a tenté d’acquérir le verrou de lecture lorsqu’il contient déjà le verrou de lecture.

-ou-

La RecursionPolicy propriété est NoRecursion, et le thread actuel a tenté d’acquérir le verrou de lecture lorsqu’il contient déjà le verrou d’écriture.

-ou-

Le nombre de récursivité dépasse la capacité du compteur. Cette limite est si importante que les applications ne doivent jamais rencontrer cette exception.

L’objet ReaderWriterLockSlim a été supprimé.

Exemples

L’exemple suivant montre comment utiliser la EnterReadLock méthode pour entrer le verrou en mode lecture. La méthode illustrée dans l’exemple récupère la valeur associée à une clé. Si la clé est introuvable, l’exception levée par l’intérieur Dictionary<TKey,TValue> est autorisée à arrêter la méthode. Un finally bloc est utilisé pour exécuter la ExitReadLock méthode, ce qui garantit que l’appelant quitte le mode de lecture.

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 string Read(int key)
{
    cacheLock.EnterReadLock();
    try
    {
        return innerCache[key];
    }
    finally
    {
        cacheLock.ExitReadLock();
    }
}
Public Function Read(ByVal key As Integer) As String
    cacheLock.EnterReadLock()
    Try
        Return innerCache(key)
    Finally
        cacheLock.ExitReadLock()
    End Try
End Function

Remarques

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

Plusieurs threads peuvent entrer en mode lecture en même temps.

Si un ou plusieurs threads attendent d’entrer en mode d’écriture, un thread qui appelle les EnterReadLock blocs de méthode jusqu’à ce que ces threads aient expiré ou entré le mode d’écriture, puis l’ont quitté.

Note

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

Au plus un thread peut être en mode mise à niveau alors que d’autres threads sont en mode lecture. Si d’autres threads attendent d’entrer en mode mise à niveau et qu’il n’y a pas de threads en attente d’entrée en mode d’écriture, les threads qui appellent la EnterReadLock méthode entrent immédiatement en mode lecture et ne bloquent pas.

S’applique à