Cer Enumeração
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Cuidado
The Constrained Execution Region (CER) feature is not supported.
Especifica o comportamento do método quando chamado em uma região de execução restrita.
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
- Herança
- Atributos
Campos
MayFail | 1 | Diante de condições excepcionais, o método pode falhar. Nesse caso, o método reportará de volta para o método de chamada se ele teve êxito ou falhou. O método deve ter uma CER em torno do corpo do método para garantir que ela possa relatar o valor retornado. |
None | 0 | O método, tipo ou assembly não tem nenhum conceito de uma CER. Ele não aproveita as garantias da CER. |
Success | 2 | Diante de condições excepcionais, o método tem garantia de êxito. Você sempre deve construir uma CER em torno do método chamado, mesmo quando ele é chamado de dentro de uma região fora da CER. Um método será bem-sucedido se ele fizer o que é desejado. Por exemplo, marcar Count com |
Exemplos
O exemplo de código a seguir demonstra o uso 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 para o 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
Comentários
A Cer enumeração especifica o comportamento de um método, tipo ou assembly dentro de uma CER (região de execução restrita). Use um dos três valores disponíveis para indicar que a entidade terá êxito, não tem conhecimento de uma CER ou pode (deterministicamente) ser capaz de relatar êxito ou falha.
Uma CER fornece garantias de que a região do código será executada ininterrupta mesmo se uma exceção assíncrona, como uma exceção de saída de memória de thread anulada ou estouro de pilha for gerada.
No entanto, o valor de Cer.None
enumeração indica que o método, o tipo ou o assembly não tem nenhum conceito de CER. Ele não aproveita as garantias da CER. Isso significa o seguinte:
Diante de condições excepcionais, o método pode falhar.
O método pode ou não relatar que falhou (não é determinístico).
O método não é escrito com CERs em mente (que é o cenário mais provável).
Se um método, tipo ou assembly não estiver explicitamente marcado como bem-sucedido, ele será marcado implicitamente como Cer.None
.