Cer Enumeration

Definition

Achtung

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

Gibt das Verhalten einer Methode an, wenn innerhalb eines eingeschränkten Ausführungsbereichs aufgerufen wird.

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

Name Wert Beschreibung
None 0

Die Methode, der Typ oder die Assembly hat kein Konzept einer CER. Sie nutzt keine CER-Garantien.

MayFail 1

Angesichts außergewöhnlicher Bedingungen kann die Methode fehlschlagen. In diesem Fall meldet die Methode zurück an die aufrufende Methode, ob sie erfolgreich war oder fehlgeschlagen ist. Die Methode muss über eine CER um den Methodentext verfügen, um sicherzustellen, dass sie den Rückgabewert melden kann.

Success 2

Angesichts außergewöhnlicher Bedingungen ist die Methode garantiert erfolgreich. Sie sollten immer eine CER um die aufgerufene Methode erstellen, auch wenn sie aus einer Nicht-CER-Region aufgerufen wird. Eine Methode ist erfolgreich, wenn sie den beabsichtigten Zweck erfüllt. Wenn sie beispielsweise unter einer CER ausgeführt wird, bedeutet beispielsweise, CountReliabilityContractAttribute(Cer.Success) dass beim Ausführen unter einer CER immer eine Anzahl der Elemente in der ArrayList und die internen Felder niemals in einem unbestimmten Zustand zurückgezahlt werden können.

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 Enumeration 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 sicher, dass der Codebereich unterbrechungsfrei ausgeführt wird, auch wenn eine asynchrone Ausnahme wie eine abgebrochene Out-of-Memory-Ausnahme oder Stapelüberlauf ausgelöst wird.

Der Enumerationswert Cer.None gibt jedoch an, dass die Methode, der Typ oder das Assembly kein Konzept eines CER hat. Sie nutzt keine CER-Garantien. Dies impliziert Folgendes:

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

  • Die Methode meldet möglicherweise oder nicht, dass sie fehlgeschlagen ist (sie ist nicht deterministisch).

  • Die Methode wird nicht unter Berücksichtigung von CERs geschrieben (das ist das wahrscheinlichste Szenario).

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

Gilt für:

Weitere Informationen