RuntimeHelpers Klasa

Definicja

Udostępnia zestaw metod statycznych i właściwości, które zapewniają obsługę kompilatorów. Klasa ta nie może być dziedziczona.

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
Dziedziczenie
RuntimeHelpers
Atrybuty

Przykłady

W poniższym przykładzie pokazano, jak niezawodnie ustawić uchwyty przy użyciu PrepareConstrainedRegions metody . Aby niezawodnie ustawić uchwyt na określony wstępnie istniejący uchwyt, należy upewnić się, że alokacja uchwytu natywnego i kolejne nagranie tego uchwytu w SafeHandle obiekcie jest niepodzielne. Wszelkie błędy między tymi operacjami (takie jak przerwanie wątku lub wyjątek poza pamięcią) spowodują wyciek uchwytu natywnego. Możesz użyć PrepareConstrainedRegions metody , aby upewnić się, że uchwyt nie wyciekł.

[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

Właściwości

OffsetToStringData
Przestarzałe.
Przestarzałe.

Pobiera przesunięcie w bajtach do danych w danym ciągu.

Metody

AllocateTypeAssociatedMemory(Type, Int32)

Przydziela pamięć skojarzona z elementem type i jest zwalniana, jeśli i kiedy Type zostanie zwolniony.

CreateSpan<T>(RuntimeFieldHandle)

Zapewnia szybki sposób uzyskiwania dostępu do stałych danych przechowywanych w module jako ReadOnlySpan<T>.

EnsureSufficientExecutionStack()

Zapewnia, że pozostałe miejsce stosu jest wystarczająco duże, aby wykonać średnią funkcję .NET.

Equals(Object, Object)

Określa, czy określone Object wystąpienia są traktowane jako równe.

ExecuteCodeWithGuaranteedCleanup(RuntimeHelpers+TryCode, RuntimeHelpers+CleanupCode, Object)
Przestarzałe.

Wykonuje kod przy użyciu innego DelegateDelegate elementu , aby wykonać dodatkowy kod w przypadku wyjątku.

GetHashCode(Object)

Służy jako funkcja skrótu dla określonego obiektu i jest odpowiednia do użycia w algorytmach i strukturach danych, które używają kodów skrótów, takich jak tabela skrótów.

GetObjectValue(Object)

Pola typu wartości.

GetSubArray<T>(T[], Range)

Fragmentuje określoną tablicę przy użyciu określonego zakresu.

GetUninitializedObject(Type)

Zwraca niezainicjowane wystąpienie typu dostarczonego przez system.

InitializeArray(Array, RuntimeFieldHandle)

Zapewnia szybki sposób inicjowania tablicy z danych przechowywanych w module.

IsReferenceOrContainsReferences<T>()

Zwraca wartość wskazującą, czy określony typ jest typem referencyjnym, czy typem wartości zawierającym odwołania.

PrepareConstrainedRegions()
Przestarzałe.

Wyznacza treść kodu jako ograniczony region wykonywania (CER).

PrepareConstrainedRegionsNoOP()
Przestarzałe.

Wyznacza treść kodu jako ograniczony region wykonywania (CER) bez przeprowadzania sondowania.

PrepareContractedDelegate(Delegate)
Przestarzałe.

Umożliwia aplikacjom dynamiczne przygotowywanie AppDomain delegatów zdarzeń.

PrepareDelegate(Delegate)

Wskazuje, że określony delegat powinien być przygotowany do włączenia do ograniczonego regionu wykonywania (CER).

PrepareMethod(RuntimeMethodHandle)

Przygotowuje metodę do włączenia w regionie wykonywania ograniczonego (CER).

PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[])

Przygotowuje metodę do włączenia do ograniczonego regionu wykonywania (CER) z określonym wystąpieniem.

ProbeForSufficientStack()
Przestarzałe.

Sondy dla określonej ilości miejsca stosu w celu zapewnienia, że przepełnienie stosu nie może nastąpić w kolejnym bloku kodu (przy założeniu, że kod używa tylko skończonej i umiarkowanej ilości miejsca stosu). Zalecamy użycie ograniczonego regionu wykonywania (CER) zamiast tej metody.

RunClassConstructor(RuntimeTypeHandle)

Gwarantuje, że inicjator typu (znany również jako konstruktor statyczny) dla określonego typu został uruchomiony.

RunModuleConstructor(ModuleHandle)

Gwarantuje, że określona metoda konstruktora modułu jest uruchamiana przez czas zwracania tej metody.

TryEnsureSufficientExecutionStack()

Próbuje upewnić się, że istnieje wystarczająca ilość stosu, aby wykonać średnią funkcję .NET.

Dotyczy