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) 内のメソッド、型、またはアセンブリの動作を指定します。 3 つの使用可能な値のいずれかを使用して、エンティティが成功するか、CER に関する知識がないか、(決定論的に) 成功または失敗を報告できることを示します。

CER は、中断されたスレッドのメモリ不足例外やスタック オーバーフローなどの非同期例外が発生した場合でも、コードの領域が中断なく実行されることを保証します。

ただし、列挙値は Cer.None 、メソッド、型、またはアセンブリに CER の概念がないことを示します。 この値では、CER の保証を利用しません。 これは以下を意味します。

  • 例外的な状況が発生した場合、メソッドは失敗する可能性があります。

  • メソッドは失敗したことを報告する場合と報告しない場合があります (非決定論的です)。

  • このメソッドは、CER を念頭に置いて記述されていません (これは最も可能性の高いシナリオです)。

メソッド、型、またはアセンブリが明示的に成功するようにマークされていない場合は、暗黙的に Cer.None".

適用対象

こちらもご覧ください