Partager via


HandleRef Structure

Définition

Inclut dans un wrapper un objet managé contenant un handle vers une ressource transmise au code non managé à l’aide de l’appel de code non managé.

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
Héritage
HandleRef
Attributs

Remarques

Important

À compter de .NET Framework 2.0, les fonctionnalités de la HandleRef classe ont été remplacées par la SafeHandle classe et ses classes dérivées, ainsi que par la CriticalHandle classe .

Si vous utilisez l’appel de plateforme pour appeler un objet managé et que l’objet n’est pas référencé ailleurs après l’appel d’appel de plateforme, il est possible pour le garbage collector de finaliser l’objet managé. Cette action libère la ressource et invalide le handle, ce qui entraîne l’échec de l’appel d’appel de plateforme. L’encapsulation d’un handle avec HandleRef des garanties que l’objet managé n’est pas ramassé par la mémoire tant que l’appel d’appel de plateforme n’est pas terminé. Pour obtenir une description des services d’appel de plateforme, consultez Consommation de fonctions DLL non managées.

Le HandleRef type value, comme GCHandle, est un type spécial reconnu par le marshaleur d’interopérabilité. Un garbage collection normal, non épinglé GCHandle , empêche également le garbage collection intempestant, tout en HandleRef offrant de meilleures performances. HandleRef Bien qu’il soit préférable d’utiliser pour conserver un objet actif pendant la durée d’un appel de plateforme, vous pouvez également utiliser la GC.KeepAlive méthode dans le même but.

Le HandleRef constructeur prend deux paramètres : un Object représentant le wrapper et un IntPtr représentant le handle non managé. Le marshaleur d’interopérabilité transmet uniquement le handle au code non managé et garantit que le wrapper (passé comme premier paramètre au constructeur du HandleRef) reste actif pendant toute la durée de l’appel.

Constructeurs

HandleRef(Object, IntPtr)

Initialise une nouvelle instance de la classe HandleRef avec l'objet à encapsuler et un handle vers la ressource utilisée par le code non managé.

Propriétés

Handle

Obtient le handle vers une ressource.

Wrapper

Obtient l'objet contenant le handle vers une ressource.

Méthodes

ToIntPtr(HandleRef)

Retourne la représentation interne sous forme d'entier d'un objet HandleRef.

Opérateurs

Explicit(HandleRef to IntPtr)

Retourne le handle vers une ressource de l'objet HandleRef spécifié.

S’applique à

Voir aussi