Cer Wyliczenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 Count |
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
.