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-области предоставляет гарантии, которые будут выполняться в области кода непрерывное выполнение даже при возникновении асинхронного исключения, например исключение out of memory прерванный поток или переполнение стека.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.None значение перечисления указывает, что метод, тип или сборка не поддерживает понятие CER-области.However, 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.

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

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