RuntimeHelpers 클래스

정의

컴파일러를 지원하는 일련의 정적 메서드와 속성을 제공합니다. 이 클래스는 상속될 수 없습니다.

public ref class RuntimeHelpers abstract sealed
public ref class RuntimeHelpers sealed
public static class RuntimeHelpers
[System.Serializable]
public sealed class RuntimeHelpers
type RuntimeHelpers = class
[<System.Serializable>]
type RuntimeHelpers = class
Public Class RuntimeHelpers
Public NotInheritable Class RuntimeHelpers
상속
RuntimeHelpers
특성

예제

다음 예제에서는 메서드를 사용하여 PrepareConstrainedRegions 핸들을 안정적으로 설정하는 방법을 보여 줍니다. 핸들을 지정된 기존 핸들로 안정적으로 설정하려면 네이티브 핸들의 할당과 개체 내에서 SafeHandle 해당 핸들의 후속 기록이 원자성인지 확인해야 합니다. 이러한 작업(예: 스레드 중단 또는 메모리 부족 예외) 간의 오류로 인해 네이티브 핸들이 유출됩니다. 메서드를 PrepareConstrainedRegions 사용하여 핸들이 유출되지 않도록 할 수 있습니다.

[StructLayout(LayoutKind.Sequential)]
struct MyStruct
{
    public IntPtr m_outputHandle;
}

sealed class MySafeHandle : SafeHandle
{
    // Called by P/Invoke when returning SafeHandles
    public MySafeHandle()
        : base(IntPtr.Zero, true)
    {
    }

    public MySafeHandle AllocateHandle()
    {
        // Allocate SafeHandle first to avoid failure later.
        MySafeHandle sh = new MySafeHandle();

        RuntimeHelpers.PrepareConstrainedRegions();
        try { }
        finally
        {
            MyStruct myStruct = new MyStruct();
            NativeAllocateHandle(ref myStruct);
            sh.SetHandle(myStruct.m_outputHandle);
        }

        return sh;
    }
<StructLayout(LayoutKind.Sequential)> _
Structure MyStruct
    Public m_outputHandle As IntPtr
End Structure 'MyStruct


NotInheritable Class MySafeHandle
    Inherits SafeHandle

    ' Called by P/Invoke when returning SafeHandles
    Public Sub New()
        MyBase.New(IntPtr.Zero, True)

    End Sub


    Public Function AllocateHandle() As MySafeHandle
        ' Allocate SafeHandle first to avoid failure later.
        Dim sh As New MySafeHandle()

        RuntimeHelpers.PrepareConstrainedRegions()
        Try
        Finally
            Dim myStruct As New MyStruct()
            NativeAllocateHandle(myStruct)
            sh.SetHandle(myStruct.m_outputHandle)
        End Try

        Return sh

    End Function

속성

OffsetToStringData
사용되지 않음.
사용되지 않음.

지정된 문자열에 있는 데이터의 오프셋을 바이트 단위로 가져옵니다.

메서드

AllocateTypeAssociatedMemory(Type, Int32)

만약 Type이 언로드되면 type과 연결된 메모리를 할당하고 해제합니다.

CreateSpan<T>(RuntimeFieldHandle)

모듈 ReadOnlySpan<T>에 저장된 상수 데이터에 빠르게 액세스할 수 있는 방법을 제공합니다.

EnsureSufficientExecutionStack()

남아 있는 스택 공간이 평균적인 .NET 함수를 실행할 정도로 충분히 큰지 확인합니다.

Equals(Object, Object)

지정한 Object 인스턴스가 동일한지를 확인합니다.

ExecuteCodeWithGuaranteedCleanup(RuntimeHelpers+TryCode, RuntimeHelpers+CleanupCode, Object)
사용되지 않음.

Delegate를 사용하여 코드를 실행하고 다른 Delegate를 사용하여 예외가 발생한 경우 추가 코드를 실행합니다.

GetHashCode(Object)

특정 개체에 대한 해시 함수로 사용되며 해시 테이블과 같은 해시 코드를 사용하는 데이터 구조 및 알고리즘에 적합합니다.

GetObjectValue(Object)

값 형식을 상자에 넣습니다.

GetSubArray<T>(T[], Range)

지정된 범위를 사용하여 지정된 배열을 조각화합니다.

GetUninitializedObject(Type)

시스템에서 제공하는 형식의 초기화를 취소한 인스턴스를 반환합니다.

InitializeArray(Array, RuntimeFieldHandle)

모듈에 저장되는 데이터의 배열을 신속하게 초기화하는 방법을 제공합니다.

IsReferenceOrContainsReferences<T>()

지정된 형식이 참조 형식인지 또는 참조를 포함하는 값 형식인지를 나타내는 값을 반환합니다.

PrepareConstrainedRegions()
사용되지 않음.

코드 본문을 CER(제약이 있는 실행 영역)로 지정합니다.

PrepareConstrainedRegionsNoOP()
사용되지 않음.

조사를 하지 않고 코드 본문을 CER(제약이 있는 실행 영역)로 지정합니다.

PrepareContractedDelegate(Delegate)
사용되지 않음.

애플리케이션이 AppDomain 이벤트 대리자를 동적으로 준비하는 방법을 제공합니다.

PrepareDelegate(Delegate)

지정된 대리자가 CER(제약이 있는 실행 영역)에 포함될 준비가 되었음을 나타냅니다.

PrepareMethod(RuntimeMethodHandle)

CER(제약이 있는 실행 영역)에 포함하기 위해 메서드를 준비합니다.

PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[])

지정된 인스턴스를 사용하여 CER(제약이 있는 실행 영역)에 포함하기 위해 메서드를 준비합니다.

ProbeForSufficientStack()
사용되지 않음.

사용자 코드에서 정해진 적당량의 스택 공간만 사용한다고 가정할 경우 다음 코드 블록 내에서 스택 오버플로가 발생할 수 없도록 특정한 스택 공간의 크기를 조사합니다. 이 메서드 대신 CER(제약이 있는 실행 영역)을 사용하는 것이 좋습니다.

RunClassConstructor(RuntimeTypeHandle)

지정된 형식의 형식 이니셜라이저(정적 생성자라고도 함)가 실행되었는지 확인합니다.

RunModuleConstructor(ModuleHandle)

지정된 모듈 생성자 메서드가 이 메서드가 반환될 때까지 실행되었는지 확인합니다.

TryEnsureSufficientExecutionStack()

평균 .NET 함수를 실행하기에 충분한 스택이 있는지 확인하려고 시도합니다.

적용 대상