英語で読む

次の方法で共有


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 を構築する必要があります。 期待どおりに実行された場合、メソッドは成功です。 たとえば、 でReliabilityContractAttribute(Cer.Success)マークCountすると、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) 内のメソッド、型、またはアセンブリの動作を指定します。 使用可能な 3 つの値のいずれかを使用して、エンティティが成功するか、CER に関する知識がない、または (決定論的に) 成功または失敗を報告できる可能性があることを示します。

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

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

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

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

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

メソッド、型、またはアセンブリが成功するように明示的にマークされていない場合、暗黙的に として 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

こちらもご覧ください