Cer Enumeration
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 Count mit |
Beispiele
Das folgende Codebeispiel veranschaulicht die Verwendung der Cer Enumeration beim Angeben eines eingeschränkten Ausführungsbereichs für eine Methode. Dieses Codebeispiel ist Teil eines größeren Beispiels für den ReliabilityContractAttribute Konstruktor.
[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 einer eingeschränkten Ausführungsregion (CER) an. Verwenden Sie einen der drei verfügbaren Werte, um anzugeben, dass die Entität erfolgreich ist, keine Kenntnis von einer CER hat oder (deterministisch) Erfolg oder Fehler melden kann.
Eine CER garantiert, dass der Codebereich auch dann ohne Unterbrechung ausgeführt wird, wenn eine asynchrone Ausnahme wie eine abgebrochene Threadausnahme außerhalb des Arbeitsspeichers oder der Stapelüberlauf ausgelöst wird.
Der Cer.None
Enumerationswert gibt jedoch an, dass die Methode, der Typ oder die Assembly kein Konzept einer CER hat. CER-Garantien können nicht genutzt werden. Dies impliziert Folgendes:
Unter außergewöhnlichen Bedingungen kann die Methode fehlschlagen.
Die Methode meldet möglicherweise einen Fehler (nicht deterministisch).
Die Methode wird nicht unter Berücksichtigung von CERs geschrieben (was das wahrscheinlichste Szenario ist).
Wenn eine Methode, ein Typ oder eine Assembly nicht explizit als erfolgreich markiert ist, wird sie implizit als Cer.None
gekennzeichnet.