HandleRef Estrutura

Definição

Envolve um objeto gerido que contém um handle a um recurso que é passado para código não gerido usando platform invoke.

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
HandleRef
Atributos

Observações

Importante

A funcionalidade da HandleRef classe foi substituída pela SafeHandle classe e pelas suas classes derivadas, bem como pela CriticalHandle própria classe.

Se usar o platform invoke para chamar um objeto gerido, e o objeto não for referenciado noutro local após a chamada de invoke da plataforma, é possível que o coletor de lixo finalize o objeto gerido. Esta ação liberta o recurso e invalida o handle, fazendo com que a chamada de invocação da plataforma falhe. Envolver um handle com HandleRef garante que o objeto gerido não é recolhido de lixo até que a chamada de invocação da plataforma seja concluída. Para uma descrição dos serviços de invocação de plataforma, veja Consuming Unmanaged DLL Functions.

O HandleRef tipo de valor, tal como GCHandle, é um tipo especial reconhecido pelo marshaler de interoperabilidade. Um normal, sem fixes GCHandle , também impede a recolha de lixo inoportuna, mas HandleRef oferece melhor desempenho. Embora seja preferido usar HandleRef para manter um objeto vivo durante a duração de uma chamada de invocação na plataforma, também pode usar o GC.KeepAlive método para o mesmo propósito.

O HandleRef construtor assume dois parâmetros: um Object que representa o wrapper, e um IntPtr que representa o handle não gerido. O interop marshaler passa apenas o handle para código não gerido e garante que o wrapper (passado como primeiro parâmetro ao construtor do HandleRef) permanece ativo durante toda a duração da chamada.

Construtores

Name Description
HandleRef(Object, IntPtr)

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

Propriedades

Name Description
Handle

Dá acesso a um recurso.

Wrapper

Faz com que o objeto que segura a pega seja um recurso.

Métodos

Name Description
ToIntPtr(HandleRef)

Devolve a representação inteira interna de um HandleRef objeto.

Operadores

Name Description
Explicit(HandleRef to IntPtr)

Devolve o handle a um recurso do objeto especificado HandleRef .

Aplica-se a

Ver também