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。