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 を構築する必要があります。 期待どおりに実行された場合、メソッドは成功です。 たとえば、 で |
例
次のコード例では、メソッドの 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 の保証を利用しません。 これは以下を意味します。
例外的な条件が発生した場合、メソッドは失敗する可能性があります。
メソッドは、失敗したことを報告する場合と報告しない場合があります (非決定的です)。
メソッドは、CE を念頭に置いて記述されていません (これは最も可能性の高いシナリオです)。
メソッド、型、またはアセンブリが成功するように明示的にマークされていない場合、暗黙的に として Cer.None
マークされます。
適用対象
こちらもご覧ください
.NET