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
public struct HandleRef
[System.Runtime.InteropServices.ComVisible(true)]
public struct HandleRef
type HandleRef = struct
Public Structure HandleRef
Inheritance
HandleRef
Attributes

Remarks

Important

Beginnend mit dem .NET Framework 2,0 wurde die Funktionalität der HandleRef-Klasse durch die SafeHandle-Klasse und die abgeleiteten Klassen sowie durch die CriticalHandle-Klasse ersetzt.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.

Wenn Sie einen Platt Form Aufruf verwenden, um ein verwaltetes Objekt aufzurufen, und nach dem Aufruf der Platt Form Aufrufe nicht auf das Objekt verwiesen wird, ist es möglich, dass der Garbage Collector das verwaltete Objekt finalisieren kann.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. Durch diese Aktion wird die Ressource freigegeben, und das Handle wird für ungültig erklärt, sodass der Aufruf der Platt Form Aufruf fehlschlägt.This action releases the resource and invalidates the handle, causing the platform invoke call to fail. Durch das umwickeln eines Handles mit HandleRef wird sichergestellt, dass das verwaltete Objekt nicht bereinigt wird, bis der Platt Form Aufruf 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 Platt Form Aufruf Dienste finden Sie unter verwenden nicht verwalteter DLL-Funktionen.For a description of platform invoke services, see Consuming Unmanaged DLL Functions.

Der HandleRef Werttyp, wie GCHandle, ist ein spezieller Typ, der vom Interop-Mars Haller erkannt wird.The HandleRef value type, like GCHandle, is a special type recognized by the interop marshaler. Ein normaler, nicht angeheftete GCHandle verhindert auch die rechtzeitige Garbage Collection, HandleRef bietet jedoch eine bessere Leistung.A normal, nonpinned GCHandle also prevents untimely garbage collection, yet HandleRef provides better performance. Obwohl die Verwendung von HandleRef, um ein Objekt für die Dauer eines Platt Form Aufrufs beizubehalten, wird bevorzugt, Sie können auch die GC.KeepAlive-Methode für denselben Zweck verwenden.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.

Der HandleRef-Konstruktor nimmt zwei Parameter an: einen Object der den Wrapper darstellt, und eine IntPtr, die das nicht verwaltete Handle darstellt.The HandleRef constructor takes two parameters: an Object representing the wrapper, and an IntPtr representing the unmanaged handle. Der Interop-Mars Haller übergibt nur das Handle an den nicht verwalteten Code und garantiert, dass der Wrapper (der als erster Parameter an den Konstruktor des HandleRefübergeben wird) für die Dauer des Aufrufes 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.

Constructors

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.

Properties

Handle

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

Wrapper

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

Methods

ToIntPtr(HandleRef)

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

Operators

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.

Applies to

See also