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 подразумевает |
Примеры
В следующем примере кода демонстрируется использование перечисления 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.