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
- 継承
- 属性
フィールド
| 名前 | 値 | 説明 |
|---|---|---|
| None | 0 | メソッド、型、またはアセンブリには、CER の概念はありません。 CER の保証は利用されません。 |
| MayFail | 1 | 例外条件が発生した場合、メソッドが失敗する可能性があります。 この場合、メソッドは成功したか失敗したかに関係なく、呼び出し元のメソッドに報告します。 戻り値を報告できるようにするには、メソッド本体の周囲に 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) 内のメソッド、型、またはアセンブリの動作を指定します。 3 つの使用可能な値のいずれかを使用して、エンティティが成功するか、CER に関する知識がないことを示すか、(決定論的に) 成功または失敗を報告できる可能性があることを示します。
CER は、中止されたスレッドのメモリ不足例外やスタック オーバーフローなどの非同期例外が発生した場合でも、コードの領域が中断されずに実行されることを保証します。
ただし、 Cer.None 列挙値は、メソッド、型、またはアセンブリに CER の概念がないことを示します。 CER の保証は利用されません。 これは以下を意味します。
例外的な条件が発生した場合、メソッドは失敗する可能性があります。
メソッドは失敗したことを報告する場合と報告しない場合があります (非決定論的です)。
このメソッドは、CER を念頭に置いて記述されていません (これは最も可能性の高いシナリオです)。
メソッド、型、またはアセンブリが明示的に成功するようにマークされていない場合、暗黙的に Cer.Noneとしてマークされます。