Partager via


ReaderWriterLockSlim.ExitReadLock Méthode

Définition

Réduit le nombre de récurrences pour le mode lecture, et quitte le mode lecture si le nombre résultant est 0 (zéro).

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

Exceptions

Le thread actuel n'a pas entré le verrou en mode lecture.

Exemples

L’exemple suivant montre comment utiliser un finally bloc pour exécuter la ExitReadLock méthode, en veillant à ce que l’appelant quitte le 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’interne Dictionary<TKey,TValue> est autorisée à arrêter la méthode. La EnterReadLock méthode est utilisée pour entrer en mode 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 n’est pas sensible à l’ordre de récursivité. Par exemple, si un thread entre dans un verrou en mode mise à niveau, puis entre dans le verrou en mode lecture, l’ordre dans lequel le thread quitte les deux modes n’a pas d’importance. Si un verrou autorise la récursivité, un thread peut entrer le verrou en mode écriture, puis l’entrer de manière récursive en mode lecture ; l’ordre dans lequel le thread quitte le mode lecture et le mode d’écriture n’a pas d’importance.

La sortie du verrou peut signaler d’autres threads en attente.

S’applique à