HandleRef HandleRef HandleRef HandleRef Struct

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.Wraps a managed object holding a handle to a resource that is passed to unmanaged code using platform invoke.

public value class HandleRef
[System.Runtime.InteropServices.ComVisible(true)]
public struct HandleRef
type HandleRef = struct
Public Structure HandleRef
Herança
Atributos

Comentários

Importante

A partir do .NET Framework 2,0, a funcionalidade da HandleRef classe foi substituída SafeHandle pela classe e suas classes derivadas, bem como pela CriticalHandle classe.Starting with the .NET Framework 2.0, the functionality of the HandleRef class has been replaced by the SafeHandle class and its derived classes, as well as by the CriticalHandle class.

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 de plataforma, é possível que o coletor de lixo Finalize o objeto gerenciado.If you use platform invoke to call a managed object, and the object is not referenced elsewhere after the platform invoke call, it is possible for the garbage collector to finalize the managed object. Essa ação libera o recurso e invalida o identificador, fazendo com que a chamada de invocação de plataforma falhe.This action releases the resource and invalidates the handle, causing the platform invoke call to fail. Encapsular um identificador HandleRef com garante que o objeto gerenciado não seja coletado pelo lixo até que a chamada de invocação de plataforma seja concluída.Wrapping a handle with HandleRef guarantees that the managed object is not garbage collected until the platform invoke call completes. Para obter uma descrição dos serviços de invocação de plataforma, consulte consumindo funções de dll não gerenciadas.For a description of platform invoke services, see Consuming Unmanaged DLL Functions.

O HandleRef tipo de valor, GCHandlelike, é um tipo especial reconhecido pelo marshaler de interoperabilidade.The HandleRef value type, like GCHandle, is a special type recognized by the interop marshaler. Um normal, não fixado GCHandle também evita a coleta de lixo inoportuno, HandleRef mas ainda fornece melhor desempenho.A normal, nonpinned GCHandle also prevents untimely garbage collection, yet HandleRef provides better performance. Embora o HandleRef uso de para manter um objeto ativo pela duração de uma chamada de invocação de plataforma seja preferencial, você GC.KeepAlive também pode usar o método para a mesma finalidade.Although using HandleRef to keep an object alive for the duration of a platform invoke call is preferred, you can also use the GC.KeepAlive method for the same purpose.

O HandleRef construtor usa dois parâmetros: um Object que representa o wrapper e um IntPtr que representa o identificador não gerenciado.The HandleRef constructor takes two parameters: an Object representing the wrapper, and an IntPtr representing the unmanaged handle. O Interop marshaler passa apenas o identificador para código não gerenciado e garante que o wrapper (passado como o primeiro parâmetro para o construtor de HandleRef) permaneça ativo durante a chamada.The interop marshaler passes only the handle to unmanaged code, and guarantees that the wrapper (passed as the first parameter to the constructor of the HandleRef) remains alive for the duration of the call.

Construtores

HandleRef(Object, IntPtr) HandleRef(Object, IntPtr) HandleRef(Object, IntPtr) 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.Initializes a new instance of the HandleRef class with the object to wrap and a handle to the resource used by unmanaged code.

Propriedades

Handle Handle Handle Handle

Obtém o identificador de um recurso.Gets the handle to a resource.

Wrapper Wrapper Wrapper Wrapper

Obtém o objeto que contém o identificador de um recurso.Gets the object holding the handle to a resource.

Métodos

ToIntPtr(HandleRef) ToIntPtr(HandleRef) ToIntPtr(HandleRef) ToIntPtr(HandleRef)

Retorna a representação de número inteiro interna de um HandleRef objeto.Returns the internal integer representation of a HandleRef object.

Operadores

Explicit(HandleRef to IntPtr) Explicit(HandleRef to IntPtr) Explicit(HandleRef to IntPtr) Explicit(HandleRef to IntPtr)

Retorna o identificador de um recurso do objeto HandleRef especificado.Returns the handle to a resource of the specified HandleRef object.

Aplica-se a

Veja também