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) |
Выделяет память, связанную с |
Box(Byte, RuntimeTypeHandle) |
Создает прямоугольный объект указанного типа из данных, расположенных в целевой ссылке. |
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) |
Гарантирует, что указанный метод конструктора модуля выполняется по времени возврата этого метода. |
SizeOf(RuntimeTypeHandle) |
Возвращает размер объекта заданного типа. |
TryEnsureSufficientExecutionStack() |
Пытается убедиться, что для выполнения средней функции .NET достаточно стека. |