RuntimeHelpers Klasse

Definition

Stellt eine Reihe von statischen Methoden und Eigenschaften für die Unterstützung von Compilern zur Verfügung. 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 Handles mithilfe der -Methode zuverlässig festgelegt PrepareConstrainedRegions werden. Um ein Handle zuverlässig auf ein angegebenes bereits vorhandenes Handle festzulegen, müssen Sie sicherstellen, dass die Zuordnung des nativen Handles und die nachfolgende Aufzeichnung dieses Handles innerhalb eines SafeHandle -Objekts atomar ist. Jeder Fehler zwischen diesen Vorgängen (z. B. ein Threadabbruch oder eine Ausnahme aufgrund von nicht genügend Arbeitsspeicher) führt dazu, dass das systemeigene Handle verloren geht. Sie können die PrepareConstrainedRegions -Methode verwenden, um sicherzustellen, dass das 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

OffsetToStringData
Veraltet.
Veraltet.

Ruft den Offset in Bytes zu den Daten in der angegebenen Zeichenfolge ab.

Methoden

AllocateTypeAssociatedMemory(Type, Int32)

Weist Arbeitsspeicher zu, der dem type zugeordnet ist und freigegeben wird, wenn der Type entladen wird.

EnsureSufficientExecutionStack()

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

Equals(Object, Object)

Stellt fest, ob die angegebenen Object-Instanzen als gleich betrachtet werden.

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

Führt Code unter Verwendung eines Delegate aus und verwendet einen weiteren Delegate, um bei einer Ausnahme zusätzlichen Code auszuführen.

GetHashCode(Object)

Fungiert als Hashfunktion für ein bestimmtes Objekt und eignet sich für die Verwendung in Hashalgorithmen und Hashdatenstrukturen, die Hashcodes verwenden, z. B. in einer Hashtabelle.

GetObjectValue(Object)

Schachtelt einen Werttyp.

GetSubArray<T>(T[], Range)

Unterteilt das angegebene Array mit dem angegebenen Bereich.

GetUninitializedObject(Type)

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

InitializeArray(Array, RuntimeFieldHandle)

Stellt eine schnelle Methode zum Initialisieren eines Arrays aus in einem Modul gespeicherten Daten bereit.

IsReferenceOrContainsReferences<T>()

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

PrepareConstrainedRegions()
Veraltet.

Kennzeichnet einen Codeabschnitt als eingeschränkten Ausführungsbereich (Constrained Execution Region, CER).

PrepareConstrainedRegionsNoOP()
Veraltet.

Kennzeichnet einen Codeabschnitt als eingeschränkten Ausführungsbereich (Constrained Execution Region, CER), ohne dass eine Überprüfung durchgeführt wird.

PrepareContractedDelegate(Delegate)
Veraltet.

Bietet Anwendungen die Möglichkeit, AppDomain-Ereignisdelegaten dynamisch vorzubereiten.

PrepareDelegate(Delegate)

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

PrepareMethod(RuntimeMethodHandle)

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

PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[])

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

ProbeForSufficientStack()
Veraltet.

Führt eine Überprüfung auf eine bestimmte Menge an Stapelspeicher durch, um sicherzustellen, dass in einem nachfolgenden Codeblock kein Stapelüberlauf auftreten kann (vorausgesetzt, dass der Code selbst nur eine begrenzte und mittlere Menge an Stapelspeicher belegt). 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 bekannt) für den angegebenen Typ ausgeführt wurde.

RunModuleConstructor(ModuleHandle)

Stellt sicher, dass eine angegebene Modulkonstruktormethode bis zum Zeitpunkt der Rückgabe dieser Methode ausgeführt wurde.

TryEnsureSufficientExecutionStack()

Versucht sicherzustellen, dass genügend Stapel vorhanden sind, um die durchschnittliche .NET-Funktion auszuführen.

Gilt für