Compartir a través de


WeakReference (Clase)

Admite la infraestructura WRL y no está diseñada para usarse directamente desde el código.

Sintaxis

class WeakReference;

Comentarios

Representa una referencia débil que solo puede usarse con Windows Runtime o COM clásico. Una referencia débil representa un objeto que puede ser o no accesible.

Un objeto WeakReference mantiene una referencia fuerte, que es un puntero a un objeto, y un recuento de referencias fuerte, que es el número de copias de la referencia fuerte que se ha distribuido con el método Resolve(). Aunque el recuento de referencias fuertes es distinto de cero, la referencia fuerte es válida y el objeto es accesible. Cuando el recuento de referencias fuertes se convierte en cero, la referencia fuerte no es válida y el objeto no es accesible.

Un objeto WeakReference se usa normalmente para representar un objeto cuya existencia se controla mediante una aplicación o un subproceso externo. Por ejemplo, construya un objeto WeakReference a partir de una referencia a un objeto de archivo. Mientras el archivo esté abierto, la referencia segura será válida. Sin embargo, si el archivo está abierto, la referencia segura no será válida.

Los métodos WeakReference son seguros para subprocesos.

Miembros

Constructores públicos

Nombre Descripción
WeakReference::WeakReference Inicializa una nueva instancia de la clase WeakReference.
WeakReference::~WeakReference Desinicializa (destruye) la instancia actual de la clase WeakReference.

Métodos públicos

Nombre Descripción
WeakReference::DecrementStrongReference Disminuye el recuento de referencias fuertes del objeto WeakReference actual.
WeakReference::IncrementStrongReference Incrementa el recuento de referencias fuertes del objeto WeakReference actual.
WeakReference::Resolve Establece el puntero especificado en el valor de referencia fuerte actual si el recuento de referencias fuertes es distinto de cero.
WeakReference::SetUnknown Establece la referencia fuerte del objeto WeakReference actual al puntero de interfaz especificado.

Jerarquía de herencia

WeakReference

Requisitos

Encabezado: implements.h

Espacio de nombres:Microsoft::WRL::Details

WeakReference::~WeakReference

Admite la infraestructura WRL y no está diseñada para usarse directamente desde el código.

virtual ~WeakReference();

Valor devuelto

Comentarios

Desinicializa la instancia actual de la clase WeakReference.

WeakReference::DecrementStrongReference

Admite la infraestructura WRL y no está diseñada para usarse directamente desde el código.

ULONG DecrementStrongReference();

Comentarios

Disminuye el recuento de referencias fuertes del objeto WeakReference actual.

Cuando el recuento de referencias fuertes se convierte en cero, la referencia fuerte se establece en nullptr.

Valor devuelto

Recuento de referencias fuerte reducido.

WeakReference::IncrementStrongReference

Admite la infraestructura WRL y no está diseñada para usarse directamente desde el código.

ULONG IncrementStrongReference();

Valor devuelto

Recuento de referencias fuerte incrementado.

Comentarios

Incrementa el recuento de referencias fuertes del objeto WeakReference actual.

WeakReference::Resolve

Admite la infraestructura WRL y no está diseñada para usarse directamente desde el código.

STDMETHOD(Resolve)
   (REFIID riid,
   _Deref_out_opt_ IInspectable **ppvObject
);

Parámetros

riid
Id. de interfaz.

ppvObject
Cuando se completa esta operación, una copia de la referencia fuerte actual si el recuento de referencias fuertes es distinto de cero.

Valor devuelto

  • S_OK si esta operación se realiza correctamente y el recuento de referencias fuertes es cero. El parámetro ppvObject se establece en nullptr.

  • S_OK si esta operación se realiza correctamente y el recuento de referencias fuertes es distinto de cero. El parámetro ppvObject se establece en la referencia fuerte.

  • De lo contrario, un valor HRESULT que indica el motivo por el que se produjo un error en esta operación.

Comentarios

Establece el puntero especificado en el valor de referencia fuerte actual si el recuento de referencias fuertes es distinto de cero.

WeakReference::SetUnknown

Admite la infraestructura WRL y no está diseñada para usarse directamente desde el código.

void SetUnknown(
   _In_ IUnknown* unk
);

Parámetros

unk
Puntero a la interfaz IUnknown de un objeto.

Comentarios

Establece la referencia fuerte del objeto WeakReference actual al puntero de interfaz especificado.

WeakReference::WeakReference

Admite la infraestructura WRL y no está diseñada para usarse directamente desde el código.

WeakReference();

Comentarios

Inicializa una nueva instancia de la clase WeakReference.

El puntero de referencia fuerte para el objeto WeakReference se inicializa en nullptr y el recuento de referencias fuertes se inicializa en 1.