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
Наследование
Атрибуты

Поля

Имя Значение Описание
None 0

Метод, тип или сборка не имеет понятия CER. Это не использует преимущества гарантий CER.

MayFail 1

В условиях исключительных условий метод может завершиться ошибкой. В этом случае метод будет сообщать обратно вызывающему методу, успешно ли выполнено или завершилось сбоем. Метод должен иметь CER вокруг текста метода, чтобы убедиться, что он может сообщать возвращаемое значение.

Success 2

В условиях исключительных условий метод гарантированно будет успешным. Всегда следует создавать CER вокруг вызываемого метода, даже если он вызывается из региона, отличного от CER. Метод успешно выполнен, если он достигает того, что предназначено. Например, маркировка Count подразумевает ReliabilityContractAttribute(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). Используйте одно из трех доступных значений, чтобы указать, что сущность будет успешно выполнена, не имеет знаний о CER или может (детерминированно) сообщить об успешном или неудачном выполнении.

CER обеспечивает гарантии того, что область кода будет выполняться без прерывания, даже если возникает асинхронное исключение, например прерывание потока вне памяти или переполнение стека.

Однако значение перечисления указывает, Cer.None что метод, тип или сборка не имеет понятия CER. Это не использует преимущества гарантий CER. В этом случае подразумевается следующее:

  • В условиях исключительных условий метод может завершиться ошибкой.

  • Метод может или не сообщить о том, что он завершился сбоем (он не детерминирован).

  • Метод не записывается с учетом ЦС (что является наиболее вероятным сценарием).

Если метод, тип или сборка не помечены явно для успешного выполнения, он неявно помечается как Cer.None.

Применяется к

См. также раздел