Partager via


Cer Énumération

Définition

Attention

The Constrained Execution Region (CER) feature is not supported.

Spécifie le comportement d'une méthode lorsqu'elle est appelée au sein d'une région d'exécution limitée.

public enum class Cer
[System.Obsolete("The Constrained Execution Region (CER) feature is not supported.", DiagnosticId="SYSLIB0004", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public enum Cer
public enum Cer
[System.Serializable]
public enum Cer
[<System.Obsolete("The Constrained Execution Region (CER) feature is not supported.", DiagnosticId="SYSLIB0004", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type Cer = 
type Cer = 
[<System.Serializable>]
type Cer = 
Public Enum Cer
Héritage
Attributs

Champs

MayFail 1

Dans des conditions exceptionnelles, la méthode peut échouer. Dans ce cas, elle indique à la méthode appelante si elle a réussi ou échoué. La méthode doit être pourvue d'une région d'exécution limitée autour de son corps pour garantir qu'elle peut signaler la valeur de retour.

None 0

La méthode, le type ou l'assembly sont dépourvus du concept de région d'exécution limitée. Ils ne tirent pas parti des garanties offertes par les régions CER.

Success 2

Dans des conditions exceptionnelles, la réussite de la méthode est garantie. Vous devez toujours construire une région d'exécution limitée autour de la méthode qui est appelée, même lorsqu'elle est appelée dans une région qui n'est pas une région d'exécution limitée. Une méthode réussit si elle exécute les actions prévues. Par exemple, le marquage Count avec ReliabilityContractAttribute(Cer.Success) implique que lorsqu’il est exécuté sous une cer, il retourne toujours un nombre d’éléments dans le ArrayList et qu’il ne peut jamais laisser les champs internes dans un état non déterminé.

Exemples

L’exemple de code suivant illustre l’utilisation de l’énumération lors de la Cer spécification d’une région d’exécution contrainte pour une méthode. Cet exemple de code fait partie d’un exemple plus grand 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 au sein d’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 manière déterministe) être en mesure de signaler la réussite ou l’échec.

Une cer garantit que la région de code s’exécutera sans interruption, même si une exception asynchrone telle qu’une exception de mémoire insuffisante de thread abandonnée ou un dépassement de capacité de pile est levée.

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. Ils ne tirent pas parti des garanties offertes par les régions CER. Cela implique ce qui suit :

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

  • La méthode peut signaler ou non son échec (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é comme réussi, il est implicitement marqué comme Cer.None.

S’applique à

Voir aussi