IRunnableObject::Run メソッド (objidl.h)
オブジェクトを強制的に実行します。
構文
HRESULT Run(
[in] LPBINDCTX pbc
);
パラメーター
[in] pbc
実行操作のバインド コンテキストへのポインター。 「IBindCtx」を参照してください。 このパラメーターは、NULL でもかまいません。
戻り値
このメソッドは、E_INVALIDARG、E_UNEXPECTED、およびS_OKの標準戻り値を返すことができます。
注釈
コンテナーは IRunnableObject::Run を呼び出して、オブジェクトが強制的に実行中の状態に入ります。 オブジェクトがまだ実行されていない場合は、 Run を 呼び出すと、何秒もの順序で高価な操作になる可能性があります。 オブジェクトが既に実行されている場合、このメソッドは オブジェクトには影響しません。
呼び出し元へのメモ
リンクが最後にアクティブ化されてから新しいクラスに変換されたリンク オブジェクトで呼び出されると、 IRunnableObject::Run はOLE_E_CLASSDIFFを返す場合があります。 この場合、クライアントは IOleLink::BindToSource を呼び出す必要があります。OleRun は、 IRunnableObject::Run によって提供される機能を簡単に再パッケージ化するヘルパー関数です。 OLE 2.01 のリリースでは、QueryInterface を呼び出し、IRunnableObject を要求し、IRunnableObject::Run を呼び出すように OleRun の実装が変更されました。 つまり、インターフェイスとヘルパー関数を同じ意味で使用できます。
実装者へのメモ
モニカーが割り当てられている場合、オブジェクトは実行中のオブジェクト テーブルに登録する必要があります。 オブジェクトは、それ自体に対して強力なロックを保持しないでください。代わりに、ロックが解除された不安定な状態のままである必要があります。 オブジェクトに対して最初の外部接続が行われるときは、オブジェクトをロックする必要があります。埋め込みオブジェクトは、実行中の状態にある間、埋め込みコンテナーのロックを保持する必要があります。 OLE 2 によって提供される既定のハンドラーは、EXE オブジェクト アプリケーションによって実装されたオブジェクトに代わって埋め込みコンテナーをロックします。 DLL オブジェクト アプリケーションによって実装されるオブジェクトは、埋め込みコンテナーに明示的にロックを設定する必要があります。そのためには、最初に IOleClientSite::GetContainer を呼び出してコンテナーへのポインターを取得し、 次に IOleContainer::LockContainer を呼び出して実際にロックを配置します。 このロックは、 IOleObject::Close が呼び出されたときに解放する必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | objidl.h |