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