Cer Cer Cer Cer Enum

Определение

Задает поведение метода при его вызове из области с ограничением исполнения.Specifies a method's behavior when called within a constrained execution region.

public enum class Cer
[System.Serializable]
public enum Cer
type Cer = 
Public Enum Cer
Наследование
Атрибуты

Поля

MayFail MayFail MayFail MayFail 1

При возникновении исключительных условий метод может завершиться неудачно.In the face of exceptional conditions, the method might fail. В этом случае метод сообщит о удачном или неудачном завершении вызвавшему его методу.In this case, the method will report back to the calling method whether it succeeded or failed. Тело метода должно быть заключено в конструкцию CER, чтобы метод мог гарантированно передать возвращаемое значение.The method must have a CER around the method body to ensure that it can report the return value.

None None None None 0

Метод, тип или сборка не поддерживает понятие CER.The method, type, or assembly has no concept of a CER. Этот метод не использует преимущества гарантий для области ограниченного выполнения.It does not take advantage of CER guarantees.

Success Success Success Success 2

При возникновении исключительных условий, метод гарантированно завершится успешно.In the face of exceptional conditions, the method is guaranteed to succeed. Всегда следует заключать вызываемый метод в конструкцию CER, даже если он вызывается из области, где CER не используется.You should always construct a CER around the method that is called, even when it is called from within a non-CER region. Метод завершается успешно, если он выполняет то, для чего предназначен.A method is successful if it accomplishes what is intended. Например, если пометить свойство Count атрибутом ReliabilityContractAttribute(Cer.Success), это подразумевает, что когда свойство выполняется в области CER, оно всегда возвращает число элементов в ArrayList и никогда не оставляет внутренние поля неопределенными.For example, marking Count with ReliabilityContractAttribute(Cer.Success) implies that when it is run under a CER, it always returns a count of the number of elements in the ArrayList and it can never leave the internal fields in an undetermined state.

Примеры

В следующем примере кода показано использование Cer перечисления при указании области ограниченного выполнения для метода.The following code example demonstrates the use of the Cer enumeration when specifying a constrained execution region for a method. Этот пример кода является частью большого примера, ReliabilityContractAttribute приведенного для конструктора.This code example is part of a larger example provided for the ReliabilityContractAttribute constructor.

[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).The Cer enumeration specifies the behavior of a method, type, or assembly within a constrained execution region (CER). Используйте одно из трех доступных значений, чтобы указать, что сущность будет выполнена успешно, не имеет сведений о CER или может (детерминированно) иметь возможность сообщать об успешном или неудачном завершении.Use one of the three available values to indicate that the entity will succeed, has no knowledge of a CER, or might (deterministically) be able to report success or failure.

CER предоставляет гарантию, что область кода будет выполняться непрерывно, даже если возникает асинхронное исключение, например прерывание нехватки памяти потока или переполнение стека.A CER provides guarantees that the region of code will execute uninterrupted even if an asynchronous exception such as an aborted thread out-of-memory exception, or stack overflow is raised.

Однако значение перечисления указывает, что метод, тип или сборка не имеют концепции CER. Cer.NoneHowever, the Cer.None enumeration value indicates that the method, type, or assembly has no concept of a CER. Этот метод не использует преимущества гарантий для области ограниченного выполнения.It does not take advantage of CER guarantees. В этом случае подразумевается следующее:This implies the following:

  • В случае исключительных условий метод может завершиться ошибкой.In the face of exceptional conditions the method might fail.

  • Метод может или не сообщать о том, что произошел сбой (он Недетерминированный).The method might or might not report that it failed (it is non-deterministic).

  • Этот метод не написан с учетом областей CER (наиболее вероятный сценарий).The method is not written with CERs in mind (which is the most likely scenario).

Если метод, тип или сборка не помечены явно как неуспешные, они неявно помечаются как Cer.None.If a method, type, or assembly is not explicitly marked to succeed, it is implicitly marked as Cer.None.

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

Дополнительно