CComCachedTearOffObject クラス
更新 : 2007 年 11 月
このクラスは、ティアオフ インターフェイスの IUnknown を実装します。
template <
class contained
>
class CComCachedTearOffObject : public IUnknown,
public CComObjectRootEx< contained::_ThreadModel::ThreadModelNoCS >
パラメータ
- contained
CComTearOffObjectBase と、そのティアオフ オブジェクトでサポートするインターフェイスから派生したティアオフ クラス。
解説
CComCachedTearOffObject は、ティアオフ インターフェイスの IUnknown を実装します。CComCachedTearOffObject クラスは、オーナー オブジェクトの IUnknown とは別に独自の IUnknown を持つ点で CComTearOffObject とは異なります。オーナー オブジェクトとは、ティアオフが作成されているオブジェクトのことです。CComCachedTearOffObject は、その IUnknown の参照カウントを独自に管理し、カウントが 0 になると自分自身を削除します。しかし、そのティアオフ インターフェイスのいずれかに対して問い合わせが行われた場合は、オーナー オブジェクトの IUnknown の参照カウントがインクリメントされます。
ティアオフを実装している CComCachedTearOffObject オブジェクトが既にインスタンス化されている場合、そのティアオフ インターフェイスに対する問い合わせが再び行われると、同じ CComCachedTearOffObject オブジェクトが再利用されます。一方、CComTearOffObject によって実装されているティアオフ インターフェイスに対してオーナー オブジェクト経由で再び問い合わせが行われた場合は、別の CComTearOffObject がインスタンス化されます。
オーナー クラスは FinalRelease を実装し、キャッシュに格納されている、CComCachedTearOffObject 独自の IUnknown に対して Release を呼び出す必要があります。これによって、この IUnknown の参照カウントがデクリメントされます。この結果、CComCachedTearOffObject の FinalRelease が呼び出され、ティアオフが削除されます。
必要条件
ヘッダー : atlcom.h