Cer Enum

Definitie

Hiermee geeft u het gedrag van een methode op wanneer deze wordt aangeroepen binnen een beperkte uitvoeringsregio.

public enum class Cer
[System.Serializable]
public enum Cer
public enum Cer
[<System.Serializable>]
type Cer = 
type Cer = 
Public Enum Cer
Overname
Kenmerken

Velden

Name Waarde Description
None 0

De methode, het type of de assembly heeft geen concept van een CER. Het profiteert niet van CER-garanties.

MayFail 1

In het geval van uitzonderlijke omstandigheden kan de methode mislukken. In dit geval rapporteert de methode aan de aanroepmethode of deze is geslaagd of mislukt. De methode moet een CER hebben rond de hoofdtekst van de methode om ervoor te zorgen dat deze de retourwaarde kan rapporteren.

Success 2

In het geval van uitzonderlijke omstandigheden wordt gegarandeerd dat de methode slaagt. U moet altijd een CER maken rond de methode die wordt aangeroepen, zelfs wanneer deze wordt aangeroepen vanuit een niet-CER-regio. Een methode is geslaagd als deze bereikt wat is bedoeld. Een markering Count met ReliabilityContractAttribute(Cer.Success) impliceert bijvoorbeeld dat wanneer deze wordt uitgevoerd onder een CER, altijd een telling van het aantal elementen in de ArrayList functie retourneert en dat de interne velden nooit in een onbepaalde staat kunnen blijven.

Voorbeelden

In het volgende codevoorbeeld wordt het gebruik van de Cer opsomming gedemonstreerd bij het opgeven van een beperkte uitvoeringsregio voor een methode. Dit codevoorbeeld maakt deel uit van een groter voorbeeld voor de ReliabilityContractAttribute constructor.

[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

Opmerkingen

De Cer opsomming geeft het gedrag aan van een methode, type of assembly binnen een beperkte uitvoeringsregio (CER). Gebruik een van de drie beschikbare waarden om aan te geven dat de entiteit slaagt, geen kennis heeft van een CER of mogelijk (deterministisch) kan rapporteren dat de entiteit is geslaagd of mislukt.

Een CER biedt garanties dat de coderegio ononderbroken wordt uitgevoerd, zelfs als een asynchrone uitzondering, zoals een afgebroken thread buiten-geheugenuitzondering, of stack-overloop wordt verhoogd.

De Cer.None opsommingswaarde geeft echter aan dat de methode, het type of de assembly geen concept van een CER heeft. Het profiteert niet van CER-garanties. Dit impliceert het volgende:

  • In het geval van uitzonderlijke omstandigheden kan de methode mislukken.

  • De methode rapporteert mogelijk of niet dat deze is mislukt (dit is niet-deterministisch).

  • De methode is niet geschreven met CER's in gedachten (dit is het meest waarschijnlijke scenario).

Als een methode, type of assembly niet expliciet is gemarkeerd om te slagen, wordt deze impliciet gemarkeerd als Cer.None.

Van toepassing op

Zie ook