Поделиться через


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

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

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

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

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

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

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