Partager via


RuntimeHelpers Classe

Définition

Fournit un ensemble de méthodes et de propriétés statiques qui prennent en charge les compilateurs. Cette classe ne peut pas être héritée.

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
Héritage
RuntimeHelpers
Attributs

Exemples

L’exemple suivant montre comment définir de manière fiable des handles à l’aide de la méthode PrepareConstrainedRegions. Pour définir de manière fiable un handle sur un handle pré-existant spécifié, vous devez vous assurer que l’allocation du handle natif et l’enregistrement suivant de ce handle dans un objet SafeHandle est atomique. Toute défaillance entre ces opérations (par exemple, une exception d’abandon de thread ou de mémoire insuffisante) entraîne la fuite du handle natif. Vous pouvez utiliser la méthode PrepareConstrainedRegions pour vous assurer que la poignée n’est pas divulguée.

[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

Propriétés

OffsetToStringData
Obsolète.
Obsolète.

Obtient le décalage, en octets, aux données de la chaîne donnée.

Méthodes

AllocateTypeAssociatedMemory(Type, Int32)

Alloue de la mémoire associée au type et est libérée si et lorsque le Type est déchargé.

Box(Byte, RuntimeTypeHandle)

Crée un objet boxed du type spécifié à partir des données situées au niveau de la référence cible.

CreateSpan<T>(RuntimeFieldHandle)

Fournit un moyen rapide d’accéder aux données constantes stockées dans un module en tant que ReadOnlySpan<T>.

EnsureSufficientExecutionStack()

Garantit que l’espace de pile restant est suffisamment grand pour exécuter la fonction .NET moyenne.

Equals(Object, Object)

Détermine si les instances de Object spécifiées sont considérées comme égales.

ExecuteCodeWithGuaranteedCleanup(RuntimeHelpers+TryCode, RuntimeHelpers+CleanupCode, Object)
Obsolète.

Exécute du code à l’aide d’un Delegate lors de l’utilisation d’une autre Delegate pour exécuter du code supplémentaire en cas d’exception.

GetHashCode(Object)

Sert de fonction de hachage pour un objet particulier et convient à une utilisation dans les algorithmes et les structures de données qui utilisent des codes de hachage, tels qu’une table de hachage.

GetObjectValue(Object)

Zone un type de valeur.

GetSubArray<T>(T[], Range)

Tranche le tableau spécifié à l’aide de la plage spécifiée.

GetUninitializedObject(Type)

Retourne une instance non initialisée du type fourni par le système.

InitializeArray(Array, RuntimeFieldHandle)

Fournit un moyen rapide d’initialiser un tableau à partir de données stockées dans un module.

IsReferenceOrContainsReferences<T>()

Retourne une valeur qui indique si le type spécifié est un type référence ou un type valeur qui contient des références ou des références par refs.

PrepareConstrainedRegions()
Obsolète.

Désigne un corps de code en tant que région d’exécution contrainte (CER).

PrepareConstrainedRegionsNoOP()
Obsolète.

Désigne un corps de code comme une région d’exécution contrainte (CER) sans effectuer de détection.

PrepareContractedDelegate(Delegate)
Obsolète.

Permet aux applications de préparer dynamiquement AppDomain délégués d’événements.

PrepareDelegate(Delegate)

Indique que le délégué spécifié doit être préparé pour l’inclusion dans une région d’exécution contrainte (CER).

PrepareMethod(RuntimeMethodHandle)

Prépare une méthode pour l’inclusion dans une région d’exécution contrainte (CER).

PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[])

Prépare une méthode pour l’inclusion dans une région d’exécution contrainte (CER) avec l’instanciation spécifiée.

ProbeForSufficientStack()
Obsolète.

Sondes pour une certaine quantité d’espace de pile pour vous assurer qu’un dépassement de capacité de pile ne peut pas se produire dans un bloc de code suivant (en supposant que votre code utilise uniquement une quantité finie et modérée d’espace de pile). Nous vous recommandons d’utiliser une région d’exécution contrainte (CER) au lieu de cette méthode.

RunClassConstructor(RuntimeTypeHandle)

Garantit que l’initialiseur de type (également appelé constructeur statique) pour le type spécifié a été exécuté.

RunModuleConstructor(ModuleHandle)

Garantit qu’une méthode de constructeur de module spécifiée est exécutée au moment où cette méthode est retournée.

SizeOf(RuntimeTypeHandle)

Obtient la taille d’un objet du type donné.

TryEnsureSufficientExecutionStack()

Tente de s’assurer qu’il existe suffisamment de pile pour exécuter la fonction .NET moyenne.

S’applique à