Класс WeakReference

Поддерживает инфраструктуру WRL и не предназначена для использования непосредственно из кода.

Синтаксис

class WeakReference;

Замечания

Представляет слабую ссылку, которую можно использовать с среда выполнения Windows или классической COM. Слабая ссылка представляет собой объект, который может быть доступен или недоступен.

WeakReference Объект поддерживает сильную ссылку, которая является указателем на объект, а также строгим числом ссылок, что является числом копий строгой ссылки, распределенных методомResolve(). Хотя строгое число ссылок не является ненулевой, строгой ссылкой является допустимой и объект доступен. Если строгое число ссылок становится нулевым, то строгательная ссылка является недопустимой, и объект недоступен.

Объект WeakReference обычно используется для представления объекта, существование которого контролируется внешним потоком или приложением. Например, создайте WeakReference объект из ссылки на файловый объект. Пока открыт файл, строгая ссылка является действительной. Но если закрыть файл, строгая ссылка станет недействительной.

Методы WeakReference являются потокобезопасны.

Участники

Открытые конструкторы

Имя Описание
WeakReference::WeakReference Инициализирует новый экземпляр класса WeakReference.
WeakReference::~WeakReference Деинициализирует (уничтожает) текущий WeakReference экземпляр класса.

Открытые методы

Имя Описание
WeakReference::D ecrementStrongReference Уменьшает строгое число ссылок текущего WeakReference объекта.
WeakReference::IncrementStrongReference Увеличивает строгое число ссылок текущего WeakReference объекта.
WeakReference::Resolve Задает указанный указатель на текущее строгое значение ссылки, если строгое число ссылок ненулевое.
WeakReference::SetUnknown Задает надежную ссылку текущего WeakReference объекта на указанный указатель интерфейса.

Иерархия наследования

WeakReference

Требования

Заголовок: implements.h

Пространство имен: Microsoft::WRL::D etails

WeakReference::~WeakReference

Поддерживает инфраструктуру WRL и не предназначена для использования непосредственно из кода.

virtual ~WeakReference();

Возвращаемое значение

Замечания

Деинициализирует текущий WeakReference экземпляр класса.

WeakReference::D ecrementStrongReference

Поддерживает инфраструктуру WRL и не предназначена для использования непосредственно из кода.

ULONG DecrementStrongReference();

Замечания

Уменьшает строгое число ссылок текущего WeakReference объекта.

Если число надежных ссылок становится нулевым, то для строгой ссылки задано значение nullptr.

Возвращаемое значение

Отложенное число сильных ссылок.

WeakReference::IncrementStrongReference

Поддерживает инфраструктуру WRL и не предназначена для использования непосредственно из кода.

ULONG IncrementStrongReference();

Возвращаемое значение

Добавочное число надежных ссылок.

Замечания

Увеличивает строгое число ссылок текущего WeakReference объекта.

WeakReference::Resolve

Поддерживает инфраструктуру WRL и не предназначена для использования непосредственно из кода.

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

Параметры

riid
Идентификатор интерфейса.

ppvObject
После завершения этой операции копия текущей строгой ссылки, если строгое число ссылок ненулевое.

Возвращаемое значение

  • S_OK, если эта операция выполнена успешно, а число надежных ссылок равно нулю. Для параметра ppvObject задано значение nullptr.

  • S_OK, если эта операция выполнена успешно, а число надежных ссылок ненулевое. Параметр ppvObject имеет сильную ссылку.

  • В противном случае — HRESULT, указывающее причину сбоя этой операции.

Замечания

Задает указанный указатель на текущее строгое значение ссылки, если строгое число ссылок ненулевое.

WeakReference::SetUnknown

Поддерживает инфраструктуру WRL и не предназначена для использования непосредственно из кода.

void SetUnknown(
   _In_ IUnknown* unk
);

Параметры

unk
Указатель на IUnknown интерфейс объекта.

Замечания

Задает надежную ссылку текущего WeakReference объекта на указанный указатель интерфейса.

WeakReference::WeakReference

Поддерживает инфраструктуру WRL и не предназначена для использования непосредственно из кода.

WeakReference();

Замечания

Инициализирует новый экземпляр класса WeakReference.

Надежный указатель ссылок для WeakReference объекта инициализирован в , а строгое число ссылок инициализировано nullptrдо 1.