RuntimeHelpers Classe

Definizione

Fornisce un set di metodi e proprietà statici che forniscono supporto per i compilatori. Questa classe non può essere ereditata.

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
Ereditarietà
RuntimeHelpers
Attributi

Esempio

Nell'esempio seguente viene illustrato come impostare in modo affidabile handle usando il metodo PrepareConstrainedRegions. Per impostare in modo affidabile un handle su un handle preesistente specificato, è necessario assicurarsi che l'allocazione dell'handle nativo e la successiva registrazione di tale handle all'interno di un oggetto SafeHandle sia atomica. Qualsiasi errore tra queste operazioni, ad esempio un'interruzione del thread o un'eccezione di memoria insufficiente, comporterà la perdita dell'handle nativo. È possibile usare il metodo PrepareConstrainedRegions per assicurarsi che l'handle non venga trapelato.

[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

Proprietà

OffsetToStringData
Obsoleti.
Obsoleti.

Ottiene l'offset, in byte, sui dati nella stringa specificata.

Metodi

AllocateTypeAssociatedMemory(Type, Int32)

Alloca la memoria associata al type e viene liberata se e quando il Type viene scaricato.

Box(Byte, RuntimeTypeHandle)

Crea un oggetto boxed del tipo specificato dai dati che si trovano nel riferimento di destinazione.

CreateSpan<T>(RuntimeFieldHandle)

Fornisce un modo rapido per accedere ai dati costanti archiviati in un modulo come ReadOnlySpan<T>.

EnsureSufficientExecutionStack()

Garantisce che lo spazio dello stack rimanente sia sufficientemente grande da eseguire la funzione .NET media.

Equals(Object, Object)

Determina se le istanze di Object specificate sono considerate uguali.

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

Esegue il codice usando un Delegate durante l'uso di un altro Delegate per eseguire codice aggiuntivo in caso di eccezione.

GetHashCode(Object)

Funge da funzione hash per un particolare oggetto ed è adatto per l'uso in algoritmi e strutture di dati che usano codici hash, ad esempio una tabella hash.

GetObjectValue(Object)

Riquadri un tipo di valore.

GetSubArray<T>(T[], Range)

Seziona la matrice specificata usando l'intervallo specificato.

GetUninitializedObject(Type)

Restituisce un'istanza non inizializzata del tipo fornito dal sistema.

InitializeArray(Array, RuntimeFieldHandle)

Fornisce un modo rapido per inizializzare una matrice da dati archiviati in un modulo.

IsReferenceOrContainsReferences<T>()

Restituisce un valore che indica se il tipo specificato è un tipo riferimento o un tipo valore che contiene riferimenti o riferimenti.

PrepareConstrainedRegions()
Obsoleti.

Definisce un corpo di codice come area di esecuzione vincolata .

PrepareConstrainedRegionsNoOP()
Obsoleti.

Definisce un corpo di codice come area di esecuzione vincolata (CER) senza eseguire alcun probe.

PrepareContractedDelegate(Delegate)
Obsoleti.

Consente alle applicazioni di preparare in modo dinamico AppDomain delegati di eventi.

PrepareDelegate(Delegate)

Indica che il delegato specificato deve essere preparato per l'inclusione in un'area di esecuzione vincolata .

PrepareMethod(RuntimeMethodHandle)

Prepara un metodo per l'inclusione in un'area di esecuzione vincolata .

PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[])

Prepara un metodo per l'inclusione in un'area di esecuzione vincolata con l'istanza specificata.

ProbeForSufficientStack()
Obsoleti.

Probe per una determinata quantità di spazio dello stack per garantire che un overflow dello stack non possa verificarsi all'interno di un blocco di codice successivo (presupponendo che il codice usi solo una quantità limitata e moderata di spazio dello stack). È consigliabile usare un'area di esecuzione vincolata anziché questo metodo.

RunClassConstructor(RuntimeTypeHandle)

Assicura che l'inizializzatore di tipo (noto anche come costruttore statico) per il tipo specificato sia stato eseguito.

RunModuleConstructor(ModuleHandle)

Garantisce che un metodo del costruttore del modulo specificato sia stato eseguito dal momento in cui viene restituito questo metodo.

SizeOf(RuntimeTypeHandle)

Ottiene le dimensioni di un oggetto del tipo specificato.

TryEnsureSufficientExecutionStack()

Prova a garantire che lo stack sia sufficiente per eseguire la funzione media di .NET.

Si applica a