RuntimeHelpers 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
컴파일러를 지원하는 일련의 정적 메서드와 속성을 제공합니다. 이 클래스는 상속될 수 없습니다.
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이 언로드되면 |
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 함수를 실행하기에 충분한 스택이 있는지 확인합니다. |