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과 연결된 메모리를 할당하고 해제합니다.

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 함수를 실행하기에 충분한 스택이 있는지 확인합니다.

적용 대상