Freigeben über


HandleRef Struktur

Definition

Umschließt ein verwaltetes Objekt, das ein Handle zu einer Ressource enthält, die über einen Plattformaufruf an nicht verwalteten Code übergeben wird.

public value class HandleRef
public readonly struct HandleRef
public struct HandleRef
[System.Runtime.InteropServices.ComVisible(true)]
public struct HandleRef
type HandleRef = struct
[<System.Runtime.InteropServices.ComVisible(true)>]
type HandleRef = struct
Public Structure HandleRef
Vererbung
HandleRef
Attribute

Hinweise

Wichtig

Ab .NET Framework 2.0 wurde die Funktionalität der HandleRef -Klasse durch die -Klasse und ihre SafeHandle abgeleiteten Klassen sowie durch die CriticalHandle -Klasse ersetzt.

Wenn Sie einen Plattformaufruf zum Aufrufen eines verwalteten Objekts verwenden und nach dem Plattformaufruf nicht an anderer Stelle auf das Objekt verwiesen wird, kann der Garbage Collector das verwaltete Objekt abschließen. Durch diese Aktion wird die Ressource freigegeben und das Handle ungültig, sodass der Plattformaufruf fehlschlägt. Das Umschließen eines Handles mit HandleRef garantiert, dass das verwaltete Objekt erst nach Abschluss des Aufrufs der Plattform gesammelt wird. Eine Beschreibung der Plattformaufrufdienste finden Sie unter Verwenden von nicht verwalteten DLL-Funktionen.

Der HandleRef Werttyp, wie GCHandle, ist ein spezieller Typ, der vom Interop-Marshaller erkannt wird. Ein normales, nicht angeheftetes System verhindert auch eine vorzeitige GCHandle Garbage Collection, bietet jedoch eine HandleRef bessere Leistung. Obwohl die Verwendung HandleRef von verwendet wird, um ein Objekt für die Dauer eines Plattformaufrufs am Leben zu halten, können Sie die GC.KeepAlive -Methode auch für denselben Zweck verwenden.

Der HandleRef Konstruktor akzeptiert zwei Parameter: einen Object , der den Wrapper darstellt, und ein , IntPtr das das nicht verwaltete Handle darstellt. Der Interop-Marshaller übergibt nur das Handle an nicht verwalteten Code und garantiert, dass der Wrapper (der als erster Parameter an den Konstruktor von HandleRefübergeben wird) für die Dauer des Aufrufs aktiv bleibt.

Konstruktoren

HandleRef(Object, IntPtr)

Initialisiert eine neue Instanz der HandleRef-Klasse mit dem zu umschließenden Objekt und einem Handle auf die Ressource, die von nicht verwaltetem Code verwendet wird.

Eigenschaften

Handle

Ruft das Handle für eine Ressource ab.

Wrapper

Ruft das Objekt ab, das das Handle für eine Ressource enthält.

Methoden

ToIntPtr(HandleRef)

Gibt die interne Ganzzahldarstellung eines HandleRef-Objekts zurück.

Operatoren

Explicit(HandleRef to IntPtr)

Gibt das Handle für eine Ressource des angegebenen HandleRef-Objekts zurück.

Gilt für:

Weitere Informationen