HandleRef HandleRef HandleRef HandleRef Struct

Definition

Umschließt ein verwaltetes Objekt, das ein Handle zu einer Ressource enthält, die über einen Plattformaufruf an nicht verwalteten Code übergeben wird.Wraps a managed object holding a handle to a resource that is passed to unmanaged code using platform invoke.

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

Hinweise

Wichtig

Beginnend mit .NET Framework 2.0, die Funktionalität der HandleRef Klasse wurde ersetzt durch die SafeHandle -Klasse und die abgeleiteten Klassen als auch durch die CriticalHandle Klasse.Starting with the .NET Framework 2.0, the functionality of the HandleRef class has been replaced by the SafeHandle class and its derived classes, as well as by the CriticalHandle class.

Bei Verwendung von Plattform aufrufen, um ein verwaltetes Objekt, rufen Sie und das Objekt ist nicht an anderer Stelle verwiesen, nachdem der Plattformaufruf ist es möglich, dass der Garbage Collector das verwaltete Objekt abschließen.If you use platform invoke to call a managed object, and the object is not referenced elsewhere after the platform invoke call, it is possible for the garbage collector to finalize the managed object. Diese Aktion gibt die Ressource frei und erklärt das Handle die Plattform verursacht Plattformaufruf fehlschlägt.This action releases the resource and invalidates the handle, causing the platform invoke call to fail. Ein Handle mit Wrapping HandleRef wird sichergestellt, dass das verwaltete Objekt wird keine Garbage Collection, bevor der Plattformaufruf abgeschlossen ist.Wrapping a handle with HandleRef guarantees that the managed object is not garbage collected until the platform invoke call completes. Eine Beschreibung der Plattform-Dienste aufrufen, finden Sie unter Consuming Unmanaged DLL Functions.For a description of platform invoke services, see Consuming Unmanaged DLL Functions.

Die HandleRef Werttyp, wie z. B. GCHandle, ist ein spezieller Typ von der interop-Marshaller erkannt werden.The HandleRef value type, like GCHandle, is a special type recognized by the interop marshaler. Ein normaler nicht fixiertes GCHandle verhindert auch, dass vorzeitige die Garbagecollection, HandleRef bietet eine bessere Leistung.A normal, nonpinned GCHandle also prevents untimely garbage collection, yet HandleRef provides better performance. Obwohl durch die Verwendung HandleRef werden bevorzugt, ein Objekt für die Dauer einer Plattform Plattformaufrufs aufrechtzuerhalten, können Sie auch die GC.KeepAlive Methode für den gleichen Zweck.Although using HandleRef to keep an object alive for the duration of a platform invoke call is preferred, you can also use the GC.KeepAlive method for the same purpose.

Die HandleRef Konstruktor akzeptiert zwei Parameter: eine Object , die den Wrapper darstellt und ein IntPtr , die nicht verwaltete Handle darstellt.The HandleRef constructor takes two parameters: an Object representing the wrapper, and an IntPtr representing the unmanaged handle. Der interop-Marshaller übergibt nur das Handle zu nicht verwaltetem Code und stellt sicher, dass den Wrapper (als erster Parameter übergeben wird, an den Konstruktor der HandleRef) für die Dauer des Aufrufs aktiv bleibt.The interop marshaler passes only the handle to unmanaged code, and guarantees that the wrapper (passed as the first parameter to the constructor of the HandleRef) remains alive for the duration of the call.

Konstruktoren

HandleRef(Object, IntPtr) HandleRef(Object, IntPtr) HandleRef(Object, IntPtr) 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.Initializes a new instance of the HandleRef class with the object to wrap and a handle to the resource used by unmanaged code.

Eigenschaften

Handle Handle Handle Handle

Ruft das Handle für eine Ressource ab.Gets the handle to a resource.

Wrapper Wrapper Wrapper Wrapper

Ruft das Objekt ab, das das Handle für eine Ressource enthält.Gets the object holding the handle to a resource.

Methoden

ToIntPtr(HandleRef) ToIntPtr(HandleRef) ToIntPtr(HandleRef) ToIntPtr(HandleRef)

Gibt die interne Ganzzahldarstellung eines HandleRef-Objekts zurück.Returns the internal integer representation of a HandleRef object.

Operatoren

Explicit(HandleRef to IntPtr) Explicit(HandleRef to IntPtr) Explicit(HandleRef to IntPtr) Explicit(HandleRef to IntPtr)

Gibt das Handle für eine Ressource des angegebenen HandleRef-Objekts zurück.Returns the handle to a resource of the specified HandleRef object.

Gilt für:

Siehe auch