Cer Enumeración

Definición

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

public enum class Cer
[System.Serializable]
public enum Cer
public enum Cer
[<System.Serializable>]
type Cer = 
type Cer = 
Public Enum Cer
Herencia
Atributos

Campos

Nombre Valor Description
None 0

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

MayFail 1

En caso de condiciones excepcionales, es posible que se produzca un error en el método. En este caso, el método volverá a informar al método que realiza la llamada tanto si se realizó correctamente como si se produjo un error. El método debe tener un CER alrededor del cuerpo del método para asegurarse de que puede notificar el valor devuelto.

Success 2

En el caso de condiciones excepcionales, se garantiza que el método se realice correctamente. Siempre debe construir un CER alrededor del método al que se llama, incluso cuando se llama desde dentro de una región no CER. Un método se realiza correctamente si logra lo que se pretende. Por ejemplo, marcar Count con ReliabilityContractAttribute(Cer.Success) implica que cuando se ejecuta bajo un CER, siempre devuelve un recuento del número de elementos en 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, que no tenga conocimiento de una CER o que pueda (deterministamente) notificar el éxito o el 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 anulada fuera de memoria o el 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 aprovecha las garantías CER. Esto implica lo siguiente:

  • En el 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 las 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