HandleRef Structure
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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é. |