Cer Výčet

Definice

Upozornění

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

Určuje chování metody při volání v rámci omezené oblasti provádění.

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
Dědičnost
Atributy

Pole

Name Hodnota Description
None 0

Metoda, typ nebo sestavení nemá žádný koncept CER. Nevyužívá záruky CER.

MayFail 1

V případě výjimečných podmínek může metoda selhat. V tomto případě metoda ohlásí zpět volající metodu bez ohledu na to, zda byla úspěšná nebo neúspěšná. Metoda musí mít kolem těla metody cer, aby se zajistilo, že může hlásit návratovou hodnotu.

Success 2

V případě výjimečných podmínek je zaručeno, že metoda bude úspěšná. Vždy byste měli vytvořit CER kolem volané metody, i když je volána z oblasti, která není CER. Metoda je úspěšná, pokud dosáhne toho, co je zamýšleno. Označení například Count znamená, ReliabilityContractAttribute(Cer.Success) že když je spuštěn pod CER, vrátí vždy počet prvků v objektu ArrayList a nemůže nikdy opustit interní pole v nedeterminovaném stavu.

Příklady

Následující příklad kódu ukazuje použití výčtu Cer při určení omezené spouštěcí oblasti pro metodu. Tento příklad kódu je součástí většího příkladu zadaného ReliabilityContractAttribute pro 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

Poznámky

Výčet Cer určuje chování metody, typu nebo sestavení v rámci omezené oblasti provádění (CER). Pomocí jedné ze tří dostupných hodnot můžete označit, že entita bude úspěšná, nemá žádné znalosti o CER nebo může (deterministicky) hlásit úspěch nebo selhání.

Cer poskytuje záruky, že oblast kódu bude spuštěna bez přerušení i v případě, že je vyvolána asynchronní výjimka, jako je přerušení vlákna mimo paměť nebo přetečení zásobníku.

Hodnota výčtu Cer.None však označuje, že metoda, typ nebo sestavení nemá žádný koncept CER. Nevyužívá záruky CER. To znamená následující:

  • Ve výjimečných podmínkách může metoda selhat.

  • Metoda může nebo nemusí nahlásit, že selhala (není deterministická).

  • Metoda není napsaná s ohledem na CERS (což je nejpravděpodobnější scénář).

Pokud metoda, typ nebo sestavení není explicitně označena jako úspěšná, je implicitně označena jako Cer.None.

Platí pro

Viz také