Udostępnij za pośrednictwem


Cer Wyliczenie

Definicja

Przestroga

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

Określa zachowanie metody po wywołaniu 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

MayFail 1

W obliczu wyjątkowych warunków metoda może zakończyć się niepowodzeniem. W takim przypadku metoda zwróci raport 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ą.

None 0

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

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 poziomu regionu innego niż CER. Metoda zakończy się powodzeniem, jeśli osiągnie zamierzony cel. Na przykład oznacza CountReliabilityContractAttribute(Cer.Success) to, że gdy jest 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 ograniczonym regionie wykonywania (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 (determinicznie) 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ą wątku 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 może zgłaszać, że nie powiodła się (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ż