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, si vous marquez Count avec ReliabilityContractAttribute(Cer.Success), cela implique que, quand elle est exécutée dans une région d’exécution limitée, elle retourne toujours le nombre d’éléments contenus dans ArrayList et 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 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 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’un CER ou peut (déterministement) ê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 hors mémoire de thread abandonnée 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 aucun concept d’un CER. Ils ne tirent pas parti des garanties offertes par les régions CER. Cela implique ce qui suit :

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

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

  • La méthode n’est pas écrite avec les 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