次の方法で共有


ObjectControl::D eactivate メソッド (comsvcs.h)

COM+ オブジェクトがリサイクルまたは破棄される前に必要なクリーンアップを実行できるようにします。

このメソッドは、オブジェクトが非アクティブ化されるたびに COM+ ランタイム環境によって呼び出されます。 このメソッドから同じアクティビティ内のオブジェクトに対してメソッド呼び出しを行わないでください。

構文

HRESULT Deactivate();

戻り値

このメソッドは、標準の戻り値E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、およびS_OKを返すことができます。

注釈

COM+ ランタイム環境は、ObjectControl インターフェイスをサポートするオブジェクトが非アクティブ化されるたびに Deactivate メソッドを呼び出します。 オブジェクトは、 SetComplete または SetAbort を呼び出したメソッドから戻るとき、実行されたトランザクションがコミットまたは中止されたとき、またはオブジェクトの参照を保持する最後のクライアントがその参照を解放したときに、非アクティブ化されます。

コンポーネントがリサイクルをサポートしている場合 (CanBePooled メソッドから TRUE を返します)、Activate メソッドがオブジェクトの状態を Activate メソッドで検出する状態にリセットするには、Deactivate メソッドを使用する必要があります。 Deactivate メソッドを使用して、オブジェクトのコンテキストを解放したり、他のコンテキスト固有のクリーンアップを実行したりすることもできます。 オブジェクトがリサイクルをサポートしている場合でも、 その Deactivate メソッドで特定の再利用可能なリソースを解放すると便利です。 たとえば、ODBC は独自の接続プールを提供します。 他のオブジェクトが使用できる一般的な接続プールでデータベース接続をプールする方が、オブジェクト プール内の特定のオブジェクトに関連付けられた状態を維持するよりも効率的です。

COM+ は、Deactivate メソッドが (デストラクターにある場合) を返した後に ObjectControl を公開するオブジェクトへの呼び出しを明示的に禁止します。 このような呼び出しでは、RPC_E_DISCONNECTED エラーが発生します。 たとえば、オブジェクトが自身への参照を渡した後、 Deactivate が返された後にオブジェクトに呼び出し戻すと、切断エラーが発生します。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー comsvcs.h

こちらもご覧ください

ObjectControl