Cer Výčet
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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í |
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
.