Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

LockRecursionException, classe

L'exception levée lorsque l'entrée récursive dans un verrou n'est pas compatible avec la stratégie de récurrence pour le verrou.

System.Object
  System.Exception
    System.Threading.LockRecursionException

Espace de noms :  System.Threading
Assembly :  mscorlib (dans mscorlib.dll)

[SerializableAttribute]
[HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true)]
public class LockRecursionException : Exception

Le type LockRecursionException expose les membres suivants.

  NomDescription
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreLockRecursionException()Initialise une nouvelle instance de la classe LockRecursionException avec un message système qui décrit l'erreur.
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreLockRecursionException(String)Initialise une nouvelle instance de la classe LockRecursionException avec un message spécifié décrivant l'erreur.
Méthode protégéeLockRecursionException(SerializationInfo, StreamingContext)Initialise une nouvelle instance de la classe LockRecursionException avec des données sérialisées.
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreLockRecursionException(String, Exception)Initialise une nouvelle instance de la classe LockRecursionException avec un message d'erreur spécifié et une référence à l'exception interne ayant provoqué cette exception.
Début

  NomDescription
Propriété publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreDataObtient une collection de paires clé/valeur qui fournissent des informations supplémentaires définies par l'utilisateur sur l'exception. (Hérité de Exception.)
Propriété publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreHelpLinkObtient ou définit un lien vers le fichier d'aide associé à cette exception. (Hérité de Exception.)
Propriété publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreHResultObtient ou définit HRESULT, valeur numérique codée qui est assignée à une exception spécifique. (Hérité de Exception.)
Propriété publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreInnerExceptionObtient l'instance Exception qui a provoqué l'exception actuelle. (Hérité de Exception.)
Propriété publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreMessageObtient un message qui décrit l'exception actuelle. (Hérité de Exception.)
Propriété publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreSourceObtient ou définit le nom de l'application ou de l'objet qui est à l'origine de l'erreur. (Hérité de Exception.)
Propriété publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreStackTraceObtient une représentation sous forme de chaîne des frames immédiates sur la pile des appels. (Hérité de Exception.)
Propriété publiqueTargetSiteObtient la méthode qui lève l'exception actuelle. (Hérité de Exception.)
Début

  NomDescription
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreEquals(Object)Détermine si l'objet spécifié est identique à l'objet actuel. (Hérité de Object.)
Méthode protégéePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreFinalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreGetBaseExceptionEn cas de substitution dans une classe dérivée, retourne Exception qui est à l'origine d'une ou de plusieurs exceptions suivantes. (Hérité de Exception.)
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreGetHashCodeSert de fonction de hachage par défaut. (Hérité de Object.)
Méthode publiqueGetObjectDataEn cas de substitution dans une classe dérivée, définit SerializationInfo avec des informations sur l'exception. (Hérité de Exception.)
Méthode publiqueGetTypeObtient le type au moment de l'exécution de l'instance actuelle. (Hérité de Exception.)
Méthode protégéePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreMemberwiseCloneCrée une copie superficielle de l'objet Object actuel. (Hérité de Object.)
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreToStringCrée et retourne une chaîne représentant l'exception en cours. (Hérité de Exception.)
Début

  NomDescription
Événement protégéSerializeObjectStateSe produit lorsqu'une exception est sérialisée pour créer un objet d'état d'exception qui contient des données sérialisées relatives à l'exception. (Hérité de Exception.)
Début

LockRecursionException est levée pour plusieurs raisons, notamment :

  • Si un thread essaie d'entrer une instance de ReaderWriterLockSlim de manière récursive, que mais l'instance ne prend pas en charge la récurrence.

  • Si un thread essaie d'entrer une instance ReaderWriterLockSlim en mode écriture ou en mode de mise à niveau alors le thread a entré à l'origine le verrou en mode lecture. Cette opération présente un risque d'interblocage potentiel et n'est donc pas autorisée.

  • Si le fait d'autoriser un niveau de récurrence supplémentaire entraînerait le dépassement de la valeur maximale du compteur de stockage interne utilisé pour suivre les récurrences. Cette limite est si élevée que les applications ne doivent jamais la rencontrer.

RemarqueRemarque

L'attribut HostProtectionAttribute appliqué à ce type ou membre a la valeur de propriété Resources suivante : MayLeakOnAbort. HostProtectionAttribute n'affecte pas les applications bureautiques (qui sont généralement démarrées en double-cliquant sur une icône, en tapant une commande ou en entrant une URL dans un navigateur). Pour plus d'informations, consultez la classe HostProtectionAttribute ou Attributs de programmation et de protection des hôtes SQL Server.

L'exemple suivant affiche deux causes de LockRecursionException lors de l'utilisation de la classe ReaderWriterLockSlim. Le programme crée un ReaderWriterLockSlim en utilisant le constructeur par défaut, qui n'autorise pas la récurrence. Le programme démarre ensuite un thread qui entre le verrou en mode lecture. Le thread essaie d'entrer le verrou de manière récursive en mode lecture et intercepte l'exception résultante. Enfin, le thread essaie d'entrer en mode écriture, ce qui risque de créer des interblocages. Le thread intercepte l'exception résultante.


using System;
using System.Threading;

class Example
{
    // By default, the lock recursion policy for a new 
    // ReaderWriterLockSlim does not allow recursion.
    static ReaderWriterLockSlim rwls = new ReaderWriterLockSlim();

    static void ThreadProc()
    {
        Console.WriteLine("Acquire the reader lock.");
        rwls.EnterReadLock();

        try
        {
            Console.WriteLine("\nAttempt to acquire the reader lock recursively:");
            rwls.EnterReadLock();
        }
        catch (LockRecursionException lre)
        {
            Console.WriteLine("{0}: {1}", 
                lre.GetType().Name, lre.Message);
        }

        try
        {
            Console.WriteLine("\nAttempt to acquire the writer lock recursively:");
            rwls.EnterWriteLock();
        }
        catch (LockRecursionException lre)
        {
            Console.WriteLine("{0}: {1}", 
                lre.GetType().Name, lre.Message);
        }
    }

    static void Main()
    {
        Thread t = new Thread(ThreadProc);
        t.Start();
        t.Join();
    }
}

/* This code example produces output similar to the following:

Acquire the reader lock.

Attempt to acquire the reader lock recursively:
LockRecursionException: Recursive read lock acquisitions not allowed in this mode.

Attempt to acquire the writer lock recursively:
LockRecursionException: Write lock may not be acquired with read lock held. This pattern is prone to deadlocks. Consider using the upgrade lock.
 */


.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Bibliothèque de classes portable

Pris en charge dans : Bibliothèque de classes portable

.NET pour les applications du Windows Store

Pris en charge dans : Windows 8

.NET pour les applications Windows Phone

Pris en charge dans : Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft