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. Этот метод не использует преимущества гарантий для области ограниченного выполнения.

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. Этот метод не использует преимущества гарантий для области ограниченного выполнения. В этом случае подразумевается следующее:

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

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

  • Этот метод не написан с учетом ceRs (что является наиболее вероятным сценарием).

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

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

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