Cer Enumeration

Definition

Achtung

The Constrained Execution Region (CER) feature is not supported.

Gibt das Verhalten einer Methode beim Aufruf innerhalb eines eingeschränkten Ausführungsbereichs an.

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
Vererbung
Attribute

Felder

MayFail 1

Unter Ausnahmebedingungen könnte die Methode fehlschlagen. In diesem Fall signalisiert die Methode der aufrufenden Methode, ob die Ausführung erfolgreich war oder fehlgeschlagen ist. Der Rumpf der Methode muss in einen eingeschränkten Ausführungsbereich eingeschlossen werden, um sicherzustellen, dass der Rückgabewert ausgegeben werden kann.

None 0

Die Methode, der Typ oder die Assembly verfügt über keinen eingeschränkten Ausführungsbereich. CER-Garantien können nicht genutzt werden.

Success 2

Unter Ausnahmebedingungen wird die Methode garantiert erfolgreich ausgeführt. Sie sollten immer einen eingeschränkten Ausführungsbereich um die aufgerufene Methode herum erstellen, auch wenn diese aus einem nicht eingeschränkten Ausführungsbereich heraus aufgerufen wird. Die Ausführung einer Methode ist erfolgreich, wenn dabei das erreicht wird, was beabsichtigt wurde. Das Markieren von Count mit ReliabilityContractAttribute(Cer.Success) gibt z.B. an, dass bei der Ausführung in einem eingeschränkten Ausführungsbereich immer die Anzahl der Elemente in der ArrayList zurückgegeben wird und die internen Felder nie in einem unbestimmten Zustand belassen werden.

Beispiele

Im folgenden Codebeispiel wird die Verwendung der Cer Enumeration beim Angeben eines eingeschränkten Ausführungsbereichs für eine Methode veranschaulicht. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für den ReliabilityContractAttribute Konstruktor bereitgestellt wird.

[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

Hinweise

Die Cer Aufzählung gibt das Verhalten einer Methode, eines Typs oder einer Assembly innerhalb eines eingeschränkten Ausführungsbereichs (CER) an. Verwenden Sie einen der drei verfügbaren Werte, um anzugeben, dass die Entität erfolgreich ist, keine Kenntnisse über eine CER hat oder (deterministisch) Erfolg oder Fehler melden kann.

Eine CER stellt garantien bereit, dass der Codebereich ununterbrochen ausgeführt wird, auch wenn eine asynchrone Ausnahme wie eine abgebrochene Threadausnahme außerhalb des Arbeitsspeichers oder stapelüberlauf ausgelöst wird.

Der Enumerationswert gibt jedoch an, dass die Methode, der Typ oder die Cer.None Assembly kein Konzept eines CER hat. CER-Garantien können nicht genutzt werden. Dies impliziert Folgendes:

  • Angesichts außergewöhnlicher Bedingungen kann die Methode fehlschlagen.

  • Die Methode kann oder nicht melden, dass es fehlgeschlagen ist (es ist nicht deterministisch).

  • Die Methode wird nicht im Hinblick auf CERs geschrieben (das ist das wahrscheinlichste Szenario).

Wenn eine Methode, ein Typ oder eine Assembly nicht explizit als erfolgreich gekennzeichnet ist, wird sie implizit als Cer.Nonegekennzeichnet.

Gilt für

Siehe auch