Cer Enumeração

Definição

Especifica o comportamento de um método quando chamado dentro de uma região de execução restrita.

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

Campos

Name Valor Description
None 0

O método, tipo ou montagem não tem conceito de CER. Não tira partido das garantias da CER.

MayFail 1

Perante condições excecionais, o método pode falhar. Neste caso, o método irá reportar ao método que chama se teve sucesso ou falhou. O método deve ter uma CER em redor do corpo do método para garantir que pode reportar o valor de retorno.

Success 2

Perante condições excecionais, o método está garantido a ter sucesso. Deve sempre construir uma CER em torno do método chamado, mesmo quando é chamado a partir de uma região que não seja CER. Um método é bem-sucedido se cumprir o pretendido. Por exemplo, marcar Count com ReliabilityContractAttribute(Cer.Success) implica que, quando é executado sob uma CER, devolve sempre uma contagem do número de elementos no ArrayList e nunca pode deixar os campos internos num estado indeterminado.

Exemplos

O exemplo de código seguinte demonstra a utilização da Cer enumeração ao especificar uma região de execução restrita para um método. Este exemplo de código faz parte de um exemplo maior fornecido ao ReliabilityContractAttribute construtor.

[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

Observações

A Cer enumeração especifica o comportamento de um método, tipo ou conjunto dentro de uma região de execução restrita (CER). Use um dos três valores disponíveis para indicar que a entidade terá sucesso, não tem conhecimento de uma CER, ou pode (deterministicamente) ser capaz de reportar sucesso ou fracasso.

Uma CER fornece garantias de que a região do código será executada ininterruptamente mesmo que uma exceção assíncrona, como uma exceção de thread abortada, fora de memória ou overflow de pilha, seja levantada.

No entanto, o Cer.None valor de enumeração indica que o método, tipo ou conjunto não tem conceito de CER. Não tira partido das garantias da CER. Isto implica o seguinte:

  • Perante condições excecionais, o método pode falhar.

  • O método pode ou não reportar que falhou (é não determinístico).

  • O método não foi escrito a pensar nas CERs (que é o cenário mais provável).

Se um método, tipo ou montagem não for explicitamente marcado como tendo sucesso, é implicitamente marcado como Cer.None.

Aplica-se a

Ver também