Cer Enumeración

Definición

Precaución

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

Especifica el comportamiento de un método cuando se llama dentro de una región de ejecución limitada.

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
Herencia
Atributos

Campos

MayFail 1

Ante condiciones excepcionales, el método podría generar errores. En este caso, el método notificará al método que realizó la llamada si se ejecutó correctamente o con errores. El método debe tener una CER alrededor del cuerpo del método para garantizar que puede notificar el valor devuelto.

None 0

El método, tipo o ensamblado no tiene ningún concepto de CER. No se aprovecha de las garantías de la CER.

Success 2

Ante condiciones excepcionales, se garantiza la ejecución correcta del método. Siempre se debe crear una CER alrededor del método al que se llama, aunque la llamada se realice desde una región no CER. Un método tiene éxito si logra lo que se pretende. Por ejemplo, marcar Count con ReliabilityContractAttribute(Cer.Success) implica que cuando se ejecuta bajo una CER, siempre devuelve un recuento del número de elementos de ArrayList y nunca puede dejar los campos internos en un estado no determinado.

Ejemplos

En el ejemplo de código siguiente se muestra el uso de la Cer enumeración al especificar una región de ejecución restringida para un método . Este ejemplo de código forma parte de un ejemplo más grande proporcionado para el ReliabilityContractAttribute constructor.

[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

Comentarios

La Cer enumeración especifica el comportamiento de un método, un tipo o un ensamblado dentro de una región de ejecución restringida (CER). Use uno de los tres valores disponibles para indicar que la entidad se realizará correctamente, no tiene conocimiento de una CER o podría (deterministamente) ser capaz de notificar éxito o error.

Una CER proporciona garantías de que la región del código se ejecutará sin interrupciones incluso si se genera una excepción asincrónica, como una excepción de subproceso anulado fuera de memoria, o se genera un desbordamiento de pila.

Sin embargo, el Cer.None valor de enumeración indica que el método, el tipo o el ensamblado no tienen ningún concepto de CER. No se aprovecha de las garantías de la CER. Esto implica lo siguiente:

  • En caso de condiciones excepcionales, el método podría producir un error.

  • El método podría notificar o no que se produjo un error (no es determinista).

  • El método no se escribe teniendo en cuenta los CER (que es el escenario más probable).

Si un método, tipo o ensamblado no está marcado explícitamente para que se realice correctamente, se marca implícitamente como Cer.None.

Se aplica a

Consulte también