RuntimeHelpers Klasse

Definition

Stellt eine Reihe statischer Methoden und Eigenschaften bereit, die Unterstützung für Compiler bereitstellen. Diese Klasse kann nicht vererbt werden.

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
Vererbung
RuntimeHelpers
Attribute

Beispiele

Das folgende Beispiel zeigt, wie mithilfe der PrepareConstrainedRegions-Methode Handles zuverlässig festgelegt werden. Um einen Handle zuverlässig auf einen angegebenen bereits vorhandenen Handle festzulegen, müssen Sie sicherstellen, dass die Zuordnung des systemeigenen Handles und die nachfolgende Aufzeichnung dieses Handles innerhalb eines SafeHandle Objekts atomisch ist. Alle Fehler zwischen diesen Vorgängen (z. B. einer Threadabbruch- oder Out-of-Memory-Ausnahme) führen dazu, dass das systemeigene Handle verloren geht. Sie können die PrepareConstrainedRegions-Methode verwenden, um sicherzustellen, dass der Handle nicht verloren geht.

[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

Eigenschaften

Name Beschreibung
OffsetToStringData

Ruft den Offset in Byte auf die Daten in der angegebenen Zeichenfolge ab.

Methoden

Name Beschreibung
EnsureSufficientExecutionStack()

Stellt sicher, dass der verbleibende Stapelplatz groß genug ist, um die durchschnittliche .NET-Funktion auszuführen.

Equals(Object, Object)

Bestimmt, ob die angegebenen Object Instanzen gleich sind.

ExecuteCodeWithGuaranteedCleanup(RuntimeHelpers+TryCode, RuntimeHelpers+CleanupCode, Object)

Führt Code mithilfe einer Delegate Anderen Delegate aus, um zusätzlichen Code im Falle einer Ausnahme auszuführen.

GetHashCode(Object)

Dient als Hashfunktion für ein bestimmtes Objekt und eignet sich für die Verwendung in Algorithmen und Datenstrukturen, die Hashcodes verwenden, z. B. eine Hashtabelle.

GetObjectValue(Object)

Felder einen Werttyp.

GetSubArray<T>(T[], Range)

Segmentiert das angegebene Array mithilfe des angegebenen Bereichs.

GetUninitializedObject(Type)

Gibt eine nicht initialisierte Instanz des vom System bereitgestellten Typs zurück.

InitializeArray(Array, RuntimeFieldHandle)

Bietet eine schnelle Möglichkeit zum Initialisieren eines Arrays aus Daten, die in einem Modul gespeichert sind.

IsReferenceOrContainsReferences<T>()

Gibt einen Wert zurück, der angibt, ob der angegebene Typ ein Bezugstyp oder ein Werttyp ist, der Verweise oder Nachreferenzen enthält.

PrepareConstrainedRegions()

Legt einen Codetext als eingeschränkten Ausführungsbereich (CER) fest.

PrepareConstrainedRegionsNoOP()

Legt einen Codetext als eingeschränkten Ausführungsbereich (CER) fest, ohne eine Probingfunktion auszuführen.

PrepareContractedDelegate(Delegate)

Bietet eine Möglichkeit, wie Anwendungen Ereignisdelegaten dynamisch vorbereiten AppDomain können.

PrepareDelegate(Delegate)

Gibt an, dass die angegebene Stellvertretung für die Aufnahme in einen eingeschränkten Ausführungsbereich (CER) vorbereitet werden soll.

PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[])

Bereitet eine Methode für die Aufnahme in einen eingeschränkten Ausführungsbereich (CER) mit der angegebenen Instanziierung vor.

PrepareMethod(RuntimeMethodHandle)

Bereitet eine Methode für die Aufnahme in einen eingeschränkten Ausführungsbereich (CER) vor.

ProbeForSufficientStack()

Probes für einen bestimmten Stapelraum, um sicherzustellen, dass ein Stapelüberlauf nicht innerhalb eines nachfolgenden Codeblocks erfolgen kann (vorausgesetzt, ihr Code verwendet nur einen begrenzten und moderaten Stapelraum). Es wird empfohlen, anstelle dieser Methode einen eingeschränkten Ausführungsbereich (CER) zu verwenden.

RunClassConstructor(RuntimeTypeHandle)

Stellt sicher, dass der Typinitialisierer (auch als statischer Konstruktor bezeichnet) für den angegebenen Typ ausgeführt wurde.

RunModuleConstructor(ModuleHandle)

Stellt sicher, dass eine angegebene Modulkonstruktormethode ausgeführt wird, wenn diese Methode zurückgegeben wird.

TryEnsureSufficientExecutionStack()

Es wird versucht, sicherzustellen, dass genügend Stapel vorhanden ist, um die durchschnittliche .NET-Funktion auszuführen.

Gilt für: