Cer Enum

Definition

Varning

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

Anger en metods beteende när den anropas inom en begränsad körningsregion.

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
Arv
Attribut

Fält

Name Värde Description
None 0

Metoden, typen eller sammansättningen har inget begrepp om en CER. Den drar inte nytta av CER-garantier.

MayFail 1

Vid exceptionella förhållanden kan metoden misslyckas. I det här fallet rapporterar metoden tillbaka till anropande metod oavsett om den lyckades eller misslyckades. Metoden måste ha en CER runt metodtexten för att säkerställa att den kan rapportera returvärdet.

Success 2

Vid exceptionella förhållanden är metoden garanterad att lyckas. Du bör alltid skapa en CER runt metoden som anropas, även när den anropas inifrån en icke-CER-region. En metod lyckas om den utför det som är avsett. Om du till exempel markerar Count med ReliabilityContractAttribute(Cer.Success) innebär det att när det körs under en CER returnerar det alltid ett antal element i ArrayList och det kan aldrig lämna de interna fälten i ett obestämt tillstånd.

Exempel

I följande kodexempel visas hur uppräkningen används Cer när du anger en begränsad körningsregion för en metod. Det här kodexemplet är en del av ett större exempel som tillhandahålls ReliabilityContractAttribute för konstruktorn.

[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

Kommentarer

Uppräkningen Cer anger beteendet för en metod, typ eller sammansättning i en begränsad körningsregion (CER). Använd ett av de tre tillgängliga värdena för att indikera att entiteten lyckas, inte har någon kunskap om en CER eller kan (deterministiskt) kunna rapportera lyckade eller misslyckade resultat.

En CER ger garantier för att kodområdet körs oavbrutet även om ett asynkront undantag, till exempel ett avbrutet undantag från minnet, eller stackspill utlöses.

Uppräkningsvärdet Cer.None anger dock att metoden, typen eller sammansättningen inte har någon uppfattning om en CER. Den drar inte nytta av CER-garantier. Detta innebär följande:

  • Vid exceptionella förhållanden kan metoden misslyckas.

  • Metoden kanske eller kanske inte rapporterar att den misslyckades (den är icke-deterministisk).

  • Metoden är inte skriven med CER i åtanke (vilket är det mest sannolika scenariot).

Om en metod, typ eller sammansättning inte uttryckligen har markerats för att lyckas markeras den implicit som Cer.None.

Gäller för

Se även