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.

Применяется к