WeakReference 类

支持 WRL 基础结构,不应在代码中直接使用。

语法

class WeakReference;

备注

表示可与 Windows 运行时或经典 COM 一起使用的弱引用。 弱引用表示可能可访问或可能不可访问的对象。

WeakReference 对象维护强引用,该引用是一个指向对象的指针及一个强引用计数,该计数是 Resolve() 方法分发的强引用的副本数。 强引用计数为非零时,强引用有效且对象可访问。 强引用计数变为零时,强引用无效且对象不可访问。

WeakReference 对象通常用于表示由外部线程或应用程序控制其是否存在的对象。 例如,通过文件对象的引用构造 WeakReference 对象。 文件打开时,强引用有效。 但文件关闭时,强引用无效。

WeakReference 方法是线程安全的。

成员

公共构造函数

名称 描述
WeakReference::WeakReference 初始化 WeakReference 类的新实例。
WeakReference::~WeakReference 取消初始化(销毁)WeakReference 类的当前实例。

公共方法

名称 描述
WeakReference::DecrementStrongReference 递减当前 WeakReference 对象的强引用计数。
WeakReference::IncrementStrongReference 递增当前 WeakReference 对象的强引用计数。
WeakReference::Resolve 如果强引用计数为非零,则将指定指针设置为当前强引用值。
WeakReference::SetUnknown 将当前 WeakReference 对象的强引用设置为指定的接口指针。

继承层次结构

WeakReference

要求

标头:implements.h

命名空间:Microsoft::WRL::Details

WeakReference::~WeakReference

支持 WRL 基础结构,不应在代码中直接使用。

virtual ~WeakReference();

返回值

注解

取消初始化 WeakReference 类的当前实例。

WeakReference::DecrementStrongReference

支持 WRL 基础结构,不应在代码中直接使用。

ULONG DecrementStrongReference();

备注

递减当前 WeakReference 对象的强引用计数。

当强引用计数变为零时,强引用将设置为 nullptr

返回值

递减的强引用计数。

WeakReference::IncrementStrongReference

支持 WRL 基础结构,不应在代码中直接使用。

ULONG IncrementStrongReference();

返回值

递增的强引用计数。

注解

递增当前 WeakReference 对象的强引用计数。

WeakReference::Resolve

支持 WRL 基础结构,不应在代码中直接使用。

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

参数

riid
接口 ID。

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。