다음을 통해 공유


Cer 열거형

정의

주의

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

제약이 있는 실행 영역에서 호출될 때의 메서드 동작을 지정합니다.

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
상속
특성

필드

MayFail 1

예외 조건이 발생하면 메서드가 실패할 수 있습니다. 이 경우 해당 메서드는 성공 또는 실패 여부를 호출 메서드에 보고합니다. 메서드에서 반환 값을 보고할 수 있도록 하려면 메서드 본문을 포함하는 CER가 있어야 합니다.

None 0

메서드, 형식 또는 어셈블리에 CER 개념이 없습니다. CER 보장의 장점을 활용하지 못합니다.

Success 2

예외 조건이 발생해도 메서드가 성공합니다. CER가 아닌 영역에서 메서드가 호출되는 경우라도 CER에서 이 메서드를 포함하도록 구성해야 합니다. 메서드가 의도한 작업을 수행하는 경우 작업에 성공합니다. 예를 들어 를 로 표시 CountReliabilityContractAttribute(Cer.Success) 하면 CER에서 실행될 때 항상 의 요소 ArrayList 수를 반환하며 내부 필드를 결정되지 않은 상태로 둘 수 없습니다.

예제

다음 코드 예제에서는 메서드에 Cer 대해 제한된 실행 영역을 지정할 때 열거형을 사용하는 방법을 보여 줍니다. 이 코드 예제는에 대해 제공 된 큰 예제의 일부는 ReliabilityContractAttribute 생성자입니다.

[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

설명

열거형은 Cer CER(제한된 실행 영역) 내에서 메서드, 형식 또는 어셈블리의 동작을 지정합니다. 사용 가능한 세 가지 값 중 하나를 사용하여 엔터티가 성공하거나 CER에 대한 지식이 없거나(결정적으로) 성공 또는 실패를 보고할 수 있음을 나타냅니다.

CER은 중단된 스레드 메모리 부족 예외 또는 스택 오버플로와 같은 비동기 예외가 발생하더라도 코드 영역이 중단 없이 실행되도록 보장합니다.

그러나 열거형 값은 Cer.None 메서드, 형식 또는 어셈블리에 CER 개념이 없음을 나타냅니다. CER 보장의 장점을 활용하지 못합니다. 이것은 다음을 의미합니다.

  • 예외적 조건에 직면하여 메서드가 실패할 수 있습니다.

  • 메서드는 실패했다고 보고하거나 보고하지 않을 수 있습니다(비결정적임).

  • 메서드는 CER을 염두에 두고 작성되지 않았습니다(가장 가능성이 높은 시나리오임).

메서드, 형식 또는 어셈블리가 명시적으로 성공으로 표시되지 않으면 암시적으로 로 Cer.None표시됩니다.

적용 대상

추가 정보