WeakReference クラス
WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。
構文
class WeakReference;
解説
Windows ランタイムまたは クラシック COM で使用できる "弱い参照" を表します。 弱い参照は、アクセスできる場合とできない場合があるオブジェクトを表します。
WeakReference
オブジェクトは、オブジェクトへのポインターである "強い参照" と、Resolve()
メソッドによって配布された強い参照のコピー数である "強い参照カウント" を保持しています。 強い参照カウントが 0 以外の間、強い参照は有効であり、オブジェクトにアクセスできます。 強い参照カウントが 0 になると、強い参照は無効になり、オブジェクトにアクセスできません。
通常、WeakReference
オブジェクトは、外部スレッドや外部アプリケーションによって存在が制御されるオブジェクトを表すために使用されます。 たとえば、ファイル オブジェクトへの参照から WeakReference
オブジェクトを構築します。 ファイルが開いている間、強い参照は有効です。 しかし、ファイルが閉じられた場合、強い参照は無効になります。
WeakReference
メソッドはスレッド セーフです。
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
WeakReference::WeakReference | WeakReference クラスの新しいインスタンスを初期化します。 |
WeakReference::~WeakReference | WeakReference クラスの現在のインスタンスの初期化を解除します (破棄します)。 |
パブリック メソッド
名前 | 説明 |
---|---|
WeakReference::DecrementStrongReference | 現在の WeakReference オブジェクトの強い参照カウントをデクリメントします。 |
WeakReference::IncrementStrongReference | 現在の WeakReference オブジェクトの強い参照カウントをインクリメントします。 |
WeakReference::Resolve | 強い参照カウントが 0 以外の場合、指定したポインターを現在の強い参照値に設定します。 |
WeakReference::SetUnknown | 現在の WeakReference オブジェクトの強い参照を、指定したインターフェイス ポインターに設定します。 |
継承階層
WeakReference
要件
ヘッダー: implements.h
名前空間: Microsoft::WRL::Details
WeakReference::~WeakReference
WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。
virtual ~WeakReference();
戻り値
解説
WeakReference
クラスの現在のインスタンスの初期化を解除します。
WeakReference::DecrementStrongReference
WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。
ULONG DecrementStrongReference();
解説
現在の WeakReference
オブジェクトの強い参照カウントをデクリメントします。
強い参照カウントが 0 になると、強い参照は nullptr
に設定されます。
戻り値
デクリメントされた強い参照カウント。
WeakReference::IncrementStrongReference
WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。
ULONG IncrementStrongReference();
戻り値
インクリメントされた強い参照カウント。
解説
現在の WeakReference
オブジェクトの強い参照カウントをインクリメントします。
WeakReference::Resolve
WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。
STDMETHOD(Resolve)
(REFIID riid,
_Deref_out_opt_ IInspectable **ppvObject
);
パラメーター
riid
インターフェイス ID。
ppvObject
この操作が完了したときの、現在の強い参照のコピー (強い参照数が 0 以外の場合)。
戻り値
この操作が成功し、強い参照カウントが 0 の場合は S_OK。 ppvObject パラメーターは
nullptr
に設定されます。この操作が成功し、強い参照カウントが 0 以外の場合は S_OK。 ppvObject パラメーターは強い参照に設定されます。
それ以外の場合は、この操作が失敗した理由を示す HRESULT。
解説
強い参照カウントが 0 以外の場合、指定したポインターを現在の強い参照値に設定します。
WeakReference::SetUnknown
WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。
void SetUnknown(
_In_ IUnknown* unk
);
パラメーター
unk
オブジェクトの IUnknown
インターフェイスへのポインター。
解説
現在の WeakReference
オブジェクトの強い参照を、指定したインターフェイス ポインターに設定します。
WeakReference::WeakReference
WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。
WeakReference();
解説
WeakReference
クラスの新しいインスタンスを初期化します。
WeakReference
オブジェクトの強い参照ポインターは nullptr
に初期化され、強い参照カウントは 1 に初期化されます。