Cer 枚举

定义

注意

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

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

C#
[System.Obsolete("The Constrained Execution Region (CER) feature is not supported.", DiagnosticId="SYSLIB0004", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public enum Cer
C#
public enum Cer
C#
[System.Serializable]
public enum Cer
继承
属性

字段

名称 说明
MayFail 1

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

None 0

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

Success 2

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

示例

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

C#
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
[MethodImpl(MethodImplOptions.NoInlining)]
void StackDepth2()
{
    try
    {
        consistentLevel2 = false;
        if (depth == 2)
            Thread.Sleep(-1);
        StackDepth3();
    }
    finally
    {
        consistentLevel2 = true;
    }
}

注解

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

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

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

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

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

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

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

适用于

产品 版本 (已过时)
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1 (5, 6, 7, 8, 9)
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

另请参阅