Sdílet prostřednictvím


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 oblasti omezeného 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

MayFail 1

V případě výjimečných podmínek může metoda selhat. V takovém případě metoda oznámí volající metodě, jestli byla úspěšná nebo neúspěšná. Metoda musí mít kolem těla metody cer, aby se zajistilo, že může hlásit vrácenou hodnotu.

None 0

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

Success 2

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

Příklady

Následující příklad kódu ukazuje použití výčtu Cer při určení oblasti omezené spuštění pro metodu. Tento příklad kódu je součástí většího příkladu 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 oblasti omezeného provádění (CER). Pomocí jedné ze tří dostupných hodnot můžete označit, že entita bude úspěšná, nemá žádné znalosti cer nebo může (deterministicky) hlásit úspěch nebo neúspěch.

Cer poskytuje záruky, že oblast kódu se spustí bez přerušení i v případě, že dojde k asynchronní výjimce, jako je výjimka přerušeného vlákna kvůli nedostatku paměti nebo přetečení zásobníku.

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

  • V případě výjimečných podmínek může metoda selhat.

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

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

Pokud metoda, typ nebo sestavení nejsou explicitně označeny jako úspěšné, jsou implicitně označeny jako Cer.None.

Platí pro

Viz také