Cer Énumération

Définition

Spécifie le comportement d’une méthode lorsqu’elle est appelée dans une région d’exécution contrainte.

public enum class Cer
[System.Serializable]
public enum Cer
public enum Cer
[<System.Serializable>]
type Cer = 
type Cer = 
Public Enum Cer
Héritage
Attributs

Champs

Nom Valeur Description
None 0

La méthode, le type ou l’assembly n’a pas de concept de CER. Elle ne profite pas des garanties CER.

MayFail 1

Face à des conditions exceptionnelles, la méthode peut échouer. Dans ce cas, la méthode renvoie à la méthode appelante si elle a réussi ou échoué. La méthode doit avoir un CER autour du corps de la méthode pour s’assurer qu’elle peut signaler la valeur de retour.

Success 2

Face à des conditions exceptionnelles, la méthode est garantie de réussir. Vous devez toujours construire une cer autour de la méthode appelée, même lorsqu’elle est appelée à partir d’une région non CER. Une méthode réussit si elle accomplit ce qui est prévu. Par exemple, le marquage Count avec ReliabilityContractAttribute(Cer.Success) implique que lorsqu’il est exécuté sous un cer, il retourne toujours un nombre d’éléments dans le ArrayList et il ne peut jamais laisser les champs internes dans un état indéterminé.

Exemples

L’exemple de code suivant illustre l’utilisation de l’énumération Cer lors de la spécification d’une région d’exécution contrainte pour une méthode. Cet exemple de code fait partie d’un exemple plus large fourni pour le ReliabilityContractAttribute constructeur.

[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
[MethodImpl(MethodImplOptions.NoInlining)]
void StackDepth2()
{
    try
    {
        consistentLevel2 = false;
        if (depth == 2)
            Thread.Sleep(-1);
        StackDepth3();
    }
    finally
    {
        consistentLevel2 = true;
    }
}
<ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)>
<MethodImpl(MethodImplOptions.NoInlining)>
Sub StackDepth2()
   Try
      consistentLevel2 = False
      If depth = 2 Then Thread.Sleep(-1)
      StackDepth3()
   Finally
      consistentLevel2 = True
   End Try
End Sub

Remarques

L’énumération Cer spécifie le comportement d’une méthode, d’un type ou d’un assembly dans une région d’exécution contrainte (CER). Utilisez l’une des trois valeurs disponibles pour indiquer que l’entité réussit, n’a aucune connaissance d’une cer ou peut (de façon déterministe) être en mesure de signaler la réussite ou l’échec.

Un cer garantit que la région du code s’exécute sans interruption même si une exception asynchrone telle qu’une exception de thread obsolète ou un dépassement de capacité de pile est déclenché.

Toutefois, la Cer.None valeur d’énumération indique que la méthode, le type ou l’assembly n’a pas de concept de cer. Elle ne profite pas des garanties CER. Cela implique les éléments suivants :

  • Face à des conditions exceptionnelles, la méthode peut échouer.

  • La méthode peut ou non signaler qu’elle a échoué (elle n’est pas déterministe).

  • La méthode n’est pas écrite avec des CER à l’esprit (ce qui est le scénario le plus probable).

Si une méthode, un type ou un assembly n’est pas explicitement marqué pour réussir, il est implicitement marqué comme Cer.None.

S’applique à

Voir aussi