Partilhar via


Classe WeakReference

Suporta a infraestrutura WRL e não se destina a ser usado diretamente do seu código.

Sintaxe

class WeakReference;

Comentários

Representa uma referência fraca que pode ser usada pelo Windows Runtime ou pelo COM clássico. Uma referência fraca representa um objeto que pode ou não estar acessível.

Um objeto WeakReference mantém uma referência forte, que é um ponteiro para um objeto e uma contagem de referência forte, que é o número de cópias da referência forte que foram distribuídas pelo método Resolve(). Embora a contagem de referência forte não seja zero, a referência forte será válida e o objeto será acessível. Quando a contagem de referência forte se torna zero, a referência forte fica inválida e o objeto fica inacessível.

Um objeto WeakReference normalmente é usado para representar um objeto cuja existência é controlada por um thread ou aplicativo externo. Por exemplo, construa um objeto WeakReference a partir de uma referência a um objeto de arquivo. Enquanto o arquivo está aberto, a referência forte é válida. Mas se o arquivo for fechado, a referência forte se tornará inválida.

Os métodos WeakReference são thread-safe.

Membros

Construtores públicos

Nome Descrição
WeakReference::WeakReference Inicializa uma nova instância da classe WeakReference.
WeakReference::~WeakReference Desinicializa (destrói) a instância atual da classe WeakReference.

Métodos públicos

Nome Descrição
WeakReference::DecrementStrongReference Diminui a forte contagem de referência do objeto atual WeakReference.
WeakReference::IncrementStrongReference Incrementa a forte contagem de referência do objeto atual WeakReference.
WeakReference::Resolve Define o ponteiro especificado para o valor de referência forte atual se a contagem de referência forte não for zero.
WeakReference::SetUnknown Define a referência forte do objeto WeakReference atual para o ponteiro de interface especificado.

Hierarquia de herança

WeakReference

Requisitos

Cabeçalho: implements.h

Namespace: Microsoft::WRL::Details

WeakReference::~WeakReference

Suporta a infraestrutura WRL e não se destina a ser usado diretamente do seu código.

virtual ~WeakReference();

Valor de retorno

Comentários

Desinicializa a instância atual da classe WeakReference.

WeakReference::DecrementStrongReference

Suporta a infraestrutura WRL e não se destina a ser usado diretamente do seu código.

ULONG DecrementStrongReference();

Comentários

Diminui a forte contagem de referência do objeto atual WeakReference.

Quando a contagem de referência forte se torna zero, a referência forte é definida como nullptr.

Valor de retorno

A contagem de referência forte diminuída.

WeakReference::IncrementStrongReference

Suporta a infraestrutura WRL e não se destina a ser usado diretamente do seu código.

ULONG IncrementStrongReference();

Valor de retorno

A contagem de referência forte incrementada.

Comentários

Incrementa a forte contagem de referência do objeto atual WeakReference.

WeakReference::Resolve

Suporta a infraestrutura WRL e não se destina a ser usado diretamente do seu código.

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

Parâmetros

riid
Um ID de interface.

ppvObject
Quando essa operação for concluída, uma cópia da referência forte atual se a contagem de referência forte for diferente de zero.

Valor de retorno

  • S_OK se essa operação for bem-sucedida e a contagem de referência forte for zero. O parâmetro ppvObject é definido como nullptr.

  • S_OK se essa operação for bem-sucedida e a contagem de referência forte for diferente de zero. O parâmetro ppvObject é definido como a referência forte.

  • Caso contrário, um HRESULT que indica o motivo pelo qual esta operação falhou.

Comentários

Define o ponteiro especificado para o valor de referência forte atual se a contagem de referência forte não for zero.

WeakReference::SetUnknown

Suporta a infraestrutura WRL e não se destina a ser usado diretamente do seu código.

void SetUnknown(
   _In_ IUnknown* unk
);

Parâmetros

unk
Um ponteiro para a interface IUnknown de um objeto.

Comentários

Define a referência forte do objeto WeakReference atual para o ponteiro de interface especificado.

WeakReference::WeakReference

Suporta a infraestrutura WRL e não se destina a ser usado diretamente do seu código.

WeakReference();

Comentários

Inicializa uma nova instância da classe WeakReference.

O ponteiro de referência forte para o objeto WeakReference é inicializado como nullptre a contagem de referência forte é inicializada como 1.