Cer Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 |
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
.