Cer Enumeração
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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 |
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.