Cer 枚举

定义

注意

The Constrained Execution Region (CER) feature is not supported.

在受约束的执行区域内调用时指定方法的行为。

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
继承
属性

字段

MayFail 1

在遇到异常情况时,此方法可能会失败。 在这种情况下,此方法将向调用方法报告它是否成功。 该方法的方法体周围必须有 CER 以确保它可以报告返回值。

None 0

方法、类型或程序集没有 CER 的概念。 它不利用 CER 保证。

Success 2

在遇到异常情况时,保证此方法获得成功。 应始终在调用的方法周围构造 CER,即使是在非 CER 区域内调用该方法。 如果方法完成了其任务,则该方法成功。 例如,标记为 CountReliabilityContractAttribute(Cer.Success) 意味着它在 CER 下运行时,它始终返回 中 ArrayList 元素数的计数,并且它永远不能使内部字段处于不确定状态。

示例

下面的代码示例演示了在为方法指定受约束的执行区域时如何使用 Cer 枚举。 此代码示例是为 构造函数提供的更大示例的 ReliabilityContractAttribute 一部分。

[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

注解

Cer枚举指定受约束的执行区域中的方法、类型或程序集的行为, (CER) 。 使用三个可用值之一来指示实体将成功、不了解 CER,或者可能 (确定) 能够报告成功或失败。

CER 保证即使引发异步异常(如中止线程内存不足异常或堆栈溢出),代码区域也能不间断地执行。

但是, Cer.None 枚举值指示方法、类型或程序集没有 CER 的概念。 它不利用 CER 保证。 这意味着:

  • 如果遇到异常情况,该方法可能会失败。

  • 方法可能报告或可能不会报告失败, (它是非确定性的) 。

  • 编写 方法时没有考虑到 CER (这是最有可能) 的方案。

如果方法、类型或程序集未显式标记为成功,则将其隐式标记为 Cer.None

适用于

另请参阅