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. |
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по