Cer Enum
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Perhatian
The Constrained Execution Region (CER) feature is not supported.
Menentukan perilaku metode saat dipanggil dalam wilayah eksekusi yang dibatasi.
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
- Warisan
- Atribut
Bidang
MayFail | 1 | Dalam menghadapi kondisi yang luar biasa, metode mungkin gagal. Dalam hal ini, metode akan melaporkan kembali ke metode panggilan apakah berhasil atau gagal. Metode harus memiliki CER di sekitar isi metode untuk memastikan bahwa metode dapat melaporkan nilai yang dikembalikan. |
None | 0 | Metode, jenis, atau perakitan tidak memiliki konsep CER. Itu tidak memanfaatkan jaminan CER. |
Success | 2 | Dalam menghadapi kondisi luar biasa, metode ini dijamin berhasil. Anda harus selalu membuat CER di sekitar metode yang dipanggil, bahkan ketika dipanggil dari dalam wilayah non-CER. Metode berhasil jika mencapai apa yang dimaksudkan. Misalnya, menandai Count dengan |
Contoh
Contoh kode berikut menunjukkan penggunaan Cer enumerasi saat menentukan wilayah eksekusi yang dibatasi untuk metode . Contoh kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk ReliabilityContractAttribute 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
Keterangan
Enumerasi Cer menentukan perilaku metode, jenis, atau perakitan dalam wilayah eksekusi yang dibatasi (CER). Gunakan salah satu dari tiga nilai yang tersedia untuk menunjukkan bahwa entitas akan berhasil, tidak memiliki pengetahuan tentang CER, atau mungkin (secara deterministik) dapat melaporkan keberhasilan atau kegagalan.
CER memberikan jaminan bahwa wilayah kode akan dijalankan tanpa gangguan bahkan jika pengecualian asinkron seperti pengecualian di luar memori utas yang dibatalkan, atau luapan tumpukan dinaikkan.
Namun, Cer.None
nilai enumerasi menunjukkan bahwa metode, jenis, atau perakitan tidak memiliki konsep CER. Itu tidak memanfaatkan jaminan CER. Ini menyiratkan hal berikut:
Dalam menghadapi kondisi luar biasa, metode mungkin gagal.
Metode mungkin atau mungkin tidak melaporkan bahwa gagal (tidak deterministik).
Metode ini tidak ditulis dengan cer dalam pikiran (yang merupakan skenario yang paling mungkin).
Jika metode, jenis, atau rakitan tidak secara eksplisit ditandai untuk berhasil, metode tersebut secara implisit ditandai sebagai Cer.None
.