Cer 枚举
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
注意
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 区域内调用该方法。 如果方法完成了其任务,则该方法成功。 例如,标记为 Count |
示例
下面的代码示例演示了在为方法指定受约束的执行区域时如何使用 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
。