RuntimeHelpers Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
Im folgenden Beispiel wird gezeigt, wie Handles mithilfe der PrepareConstrainedRegions -Methode zuverlässig festgelegt 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. Fehler zwischen diesen Vorgängen (z. B. Threadabbruch oder Ausnahme von nicht genügend Arbeitsspeicher) führen dazu, dass das systemeigene Handle kompromittiert wird. Sie können die PrepareConstrainedRegions -Methode verwenden, um sicherzustellen, dass das Handle nicht kompromittiert wird.
[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 |
Box(Byte, RuntimeTypeHandle) |
Stellt eine Reihe von statischen Methoden und Eigenschaften für die Unterstützung von Compilern zur Verfügung. Diese Klasse kann nicht vererbt werden. |
CreateSpan<T>(RuntimeFieldHandle) |
Bietet eine schnelle Möglichkeit, auf konstante Daten zuzugreifen, die in einem Modul als ReadOnlySpan<T>gespeichert sind. |
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 Verweistyp oder ein Werttyp ist, der Verweise oder Nachreferenzen 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 zum Zeitpunkt der Rückgabe dieser Methode ausgeführt wurde. |
SizeOf(RuntimeTypeHandle) |
Stellt eine Reihe von statischen Methoden und Eigenschaften für die Unterstützung von Compilern zur Verfügung. Diese Klasse kann nicht vererbt werden. |
TryEnsureSufficientExecutionStack() |
Versucht sicherzustellen, dass genügend Stapel vorhanden ist, um die durchschnittliche .NET-Funktion auszuführen. |
Gilt für:
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für