HandleRef Struktura

Definicja

Zawija zarządzany obiekt przechowujący dojście do zasobu, który jest przesyłany do niezarządzanego kodu przy użyciu wywołania platformy.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
Dziedziczenie
HandleRef
Atrybuty

Uwagi

Ważne

Począwszy od .NET Framework 2,0, funkcjonalność HandleRef klasy została zastąpiona SafeHandle przez klasę i jej klasy pochodne, a także przez CriticalHandle klasę.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.

Jeśli używasz wywołania platformy do wywoływania obiektu zarządzanego, a obiekt nie jest przywoływany w innym miejscu po wywołaniu platformy, możliwe jest, aby moduł zbierający elementy bezużyteczne zakończył obiekt zarządzany.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. Ta akcja spowoduje zwolnienie zasobu i unieważnienie dojścia, co powoduje Niepowodzenie wywołania przez platformę.This action releases the resource and invalidates the handle, causing the platform invoke call to fail. Zawijanie uchwytu HandleRef z gwarancją, że obiekt zarządzany nie jest odzyskiwany do momentu zakończenia wywołania platformy.Wrapping a handle with HandleRef guarantees that the managed object is not garbage collected until the platform invoke call completes. Aby uzyskać opis wywołań usługi dla platformy, zobacz Używanie niezarządzanych funkcji DLL.For a description of platform invoke services, see Consuming Unmanaged DLL Functions.

Typ HandleRef wartościGCHandle, na przykład, jest typem specjalnym rozpoznawanym przez Organizatora międzyoperacyjnego.The HandleRef value type, like GCHandle, is a special type recognized by the interop marshaler. Normalny, przypięty GCHandle uniemożliwia również nieczasochłonne wyrzucanie HandleRef elementów bezużytecznych, ale zapewnia lepszą wydajność.A normal, nonpinned GCHandle also prevents untimely garbage collection, yet HandleRef provides better performance. Chociaż używanie HandleRef do zachowania obiektu w czasie trwania wywołania wywołania platformy jest preferowane, można również GC.KeepAlive użyć metody do tego samego celu.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.

Konstruktor przyjmuje dwa parametry Object : reprezentujący otokę i IntPtr reprezentujący niezarządzany uchwyt. HandleRefThe HandleRef constructor takes two parameters: an Object representing the wrapper, and an IntPtr representing the unmanaged handle. Organizator międzyoperacyjny przekazuje tylko dojście do kodu niezarządzanego i gwarantuje, że otoka (przekazana jako pierwszy parametr do konstruktora HandleRef) pozostanie aktywna na czas trwania wywołania.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.

Konstruktory

HandleRef(Object, IntPtr)

Inicjuje nowe wystąpienie HandleRef klasy z obiektem do zawijania i dojściem do zasobu używanego przez kod niezarządzany.Initializes a new instance of the HandleRef class with the object to wrap and a handle to the resource used by unmanaged code.

Właściwości

Handle

Pobiera dojście do zasobu.Gets the handle to a resource.

Wrapper

Pobiera obiekt przechowujący dojście do zasobu.Gets the object holding the handle to a resource.

Metody

ToIntPtr(HandleRef)

Zwraca wewnętrzną reprezentację HandleRef obiektu.Returns the internal integer representation of a HandleRef object.

Operatory

Explicit(HandleRef to IntPtr)

Zwraca dojście do zasobu określonego HandleRef obiektu.Returns the handle to a resource of the specified HandleRef object.

Dotyczy

Zobacz też