HandleRef Estrutura

Definição

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 readonly struct HandleRef
public struct HandleRef
[System.Runtime.InteropServices.ComVisible(true)]
public struct HandleRef
Herança
HandleRef
Atributos

Comentários

Importante

A partir do .NET Framework 2.0, 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 é o lixo 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 Consumindo funções de DLL não gerenciadas.

O HandleRef tipo de valor, como GCHandle, é um tipo especial reconhecido pelo marshaler de interoperabilidade. Um normal não fixado GCHandle também impede a coleta de lixo intempestivamente, mas HandleRef fornece melhor desempenho. Embora usar 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 que representa o 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 ativo durante a chamada.

Construtores

HandleRef(Object, IntPtr)

Inicializa uma nova instância da classe HandleRef com o objeto a encapsular e um identificador para o recurso usado pelo código não gerenciado.

Propriedades

Handle

Obtém o identificador de um recurso.

Wrapper

Obtém o objeto que contém o identificador de um recurso.

Métodos

ToIntPtr(HandleRef)

Retorna a representação de número inteiro interna de um HandleRef objeto.

Operadores

Explicit(HandleRef to IntPtr)

Retorna o identificador de um recurso do objeto HandleRef especificado.

Aplica-se a

Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Confira também