HandleRef Estrutura
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Encapsula um objeto gerenciado que contém um identificador para um recurso que é passado para código não gerenciado usando a invocação de plataforma.
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
- Herança
- Atributos
Comentários
Importante
A funcionalidade da HandleRef classe foi substituída pela SafeHandle classe e suas classes derivadas, bem como pela CriticalHandle classe.
Se você usar a invocação de plataforma para chamar um objeto gerenciado e o objeto não for referenciado em outro lugar após a chamada de invocação da plataforma, será possível que o coletor de lixo finalize o objeto gerenciado. Essa ação libera o recurso e invalida o identificador, fazendo com que a chamada de invocação da plataforma falhe. Encapsular um identificador com HandleRef garantias de que o objeto gerenciado não é coletado até que a chamada de invocação da plataforma seja concluída. Para obter uma descrição dos serviços de invocação de plataforma, consulte Consuming Unmanaged DLL Functions.
O HandleRef tipo de valor, como GCHandle, é um tipo especial reconhecido pelo marshaler de interoperabilidade. Uma coleta de lixo normal e não apoiada GCHandle também impede a coleta de lixo intempestada, mas HandleRef oferece melhor desempenho. Embora o uso HandleRef para manter um objeto ativo durante a duração de uma chamada de invocação de plataforma seja preferencial, você também pode usar o GC.KeepAlive método para a mesma finalidade.
O HandleRef construtor usa dois parâmetros: um Object que representa o wrapper e um IntPtr identificador não gerenciado. O marshaler de interoperabilidade passa apenas o identificador para o código não gerenciado e garante que o wrapper (passado como o primeiro parâmetro para o construtor do HandleRef) permaneça vivo durante a chamada.
Construtores
| Nome | Description |
|---|---|
| HandleRef(Object, IntPtr) |
Inicializa uma nova instância da HandleRef classe com o objeto a ser encapsulado e um identificador para o recurso usado pelo código não gerenciado. |
Propriedades
| Nome | Description |
|---|---|
| Handle |
Obtém o identificador para um recurso. |
| Wrapper |
Obtém o objeto que mantém o identificador em um recurso. |
Métodos
| Nome | Description |
|---|---|
| ToIntPtr(HandleRef) |
Retorna a representação inteira interna de um HandleRef objeto. |
Operadores
| Nome | Description |
|---|---|
| Explicit(HandleRef to IntPtr) |
Retorna o identificador para um recurso do objeto especificado HandleRef . |