Cer Wyliczenie

Definicja

Uwaga

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

Określa zachowanie metody w przypadku wywołania w ograniczonym regionie wykonywania.

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
Dziedziczenie
Atrybuty

Pola

Nazwa Wartość Opis
None 0

Metoda, typ lub zestaw nie ma pojęcia CER. Nie korzysta z gwarancji CER.

MayFail 1

W obliczu wyjątkowych warunków metoda może zakończyć się niepowodzeniem. W takim przypadku metoda zgłosi się z powrotem do metody wywołującej, niezależnie od tego, czy zakończyła się powodzeniem, czy niepowodzeniem. Metoda musi mieć cer wokół treści metody, aby upewnić się, że może zgłosić wartość zwracaną.

Success 2

W obliczu wyjątkowych warunków metoda ma gwarancję powodzenia. Zawsze należy utworzyć cer wokół wywoływanej metody, nawet jeśli jest wywoływana z regionu innego niż CER. Metoda zakończy się powodzeniem, jeśli osiągnie to, co jest zamierzone. Na przykład oznaczanie Count znakiem ReliabilityContractAttribute(Cer.Success) oznacza, że gdy jest on uruchamiany w ramach cer, zawsze zwraca liczbę elementów w ArrayList obiekcie i nigdy nie może pozostawić pól wewnętrznych w stanie nieokreślonym.

Przykłady

W poniższym przykładzie kodu pokazano użycie Cer wyliczenia podczas określania ograniczonego regionu wykonywania dla metody. Ten przykład kodu jest częścią większego przykładu podanego dla konstruktora 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

Uwagi

Wyliczenie Cer określa zachowanie metody, typu lub zestawu w regionie wykonywania ograniczonego (CER). Użyj jednej z trzech dostępnych wartości, aby wskazać, że jednostka zakończy się powodzeniem, nie ma wiedzy na temat cer lub może (deterministycznie) być w stanie zgłosić powodzenie lub niepowodzenie.

Cer zapewnia gwarancje, że region kodu będzie wykonywany nieprzerwanie, nawet jeśli zostanie zgłoszony wyjątek asynchroniczny, taki jak przerwany wyjątek poza pamięcią lub przepełnienie stosu.

Jednak wartość wyliczenia wskazuje, Cer.None że metoda, typ lub zestaw nie ma pojęcia CER. Nie korzysta z gwarancji CER. Oznacza to następujące kwestie:

  • W obliczu wyjątkowych warunków metoda może zakończyć się niepowodzeniem.

  • Metoda może lub nie zgłosić błędu (nie jest deterministyczna).

  • Metoda nie jest napisana z myślą o cers (co jest najbardziej prawdopodobnym scenariuszem).

Jeśli metoda, typ lub zestaw nie jest jawnie oznaczona jako powodzenie, jest niejawnie oznaczona jako Cer.None.

Dotyczy

Zobacz też