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.
Encapsule un objet managé contenant un handle à une ressource transmise au code non managé à l’aide d’un appel de plateforme.
public value class HandleRef
public struct HandleRef
[System.Runtime.InteropServices.ComVisible(true)]
public struct HandleRef
public readonly struct HandleRef
type HandleRef = struct
[<System.Runtime.InteropServices.ComVisible(true)>]
type HandleRef = struct
Public Structure HandleRef
- Héritage
- Attributs
Remarques
Important
La fonctionnalité de la HandleRef classe a été remplacée 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 de la plateforme, il est possible que le garbage collector finalise 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. Encapsuler un handle avec HandleRef des garanties que l’objet managé n’est pas récupéré par la mémoire tant que l’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 valeur, tel que GCHandle, est un type spécial reconnu par le marshaleur d’interopérabilité. Un garbage collection normal et non épinglé GCHandle empêche également le garbage collection intempestive, mais HandleRef offre de meilleures performances. Bien que l’utilisation d’un HandleRef objet reste actif pendant la durée d’un appel d’appel de plateforme est préférée, vous pouvez également utiliser la GC.KeepAlive méthode à la même fin.
Le HandleRef constructeur prend deux paramètres : un Object représentant le wrapper et un IntPtr handle non managé. Le marshaleur d’interopérabilité transmet uniquement le handle au code non managé et garantit que le wrapper (passé en tant que premier paramètre au constructeur du HandleRef) reste actif pendant la durée de l’appel.
Constructeurs
| Nom | Description |
|---|---|
| HandleRef(Object, IntPtr) |
Initialise une nouvelle instance de la HandleRef classe avec l’objet pour encapsuler et un handle vers la ressource utilisée par du code non managé. |
Propriétés
| Nom | Description |
|---|---|
| Handle |
Obtient le handle vers une ressource. |
| Wrapper |
Obtient l’objet contenant le handle sur une ressource. |
Méthodes
| Nom | Description |
|---|---|
| ToIntPtr(HandleRef) |
Retourne la représentation entière interne d’un HandleRef objet. |
Opérateurs
| Nom | Description |
|---|---|
| Explicit(HandleRef to IntPtr) |
Retourne le handle à une ressource de l’objet spécifié HandleRef . |