AutoThread サンプル : CAtlAutoThreadModule の使用例

更新 : 2007 年 11 月

AutoThread サンプルでは、CAtlAutoThreadModule の使用例を示します。このサーバーは、Server.exe ファイルで実装されます。EXE のモジュールは、CAtlModule ではなく CAtlAutoThreadModule から派生します。

AutoThread 属性は、このサンプルの属性付きバージョンです。

ehf89546.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

このサンプル コードは概念を示す目的で提供されているものです。必ずしも最も安全なコーディング手法に従っているわけではないので、アプリケーションまたは Web サイトでは使用しないでください。Microsoft は、サンプル コードが意図しない目的で使用された場合に、付随的または間接的な損害について責任を負いません。

サンプルとそのインストール手順を取得するには

  • Visual Studio で、[ヘルプ] メニューの [サンプル] をクリックします。

    詳細については、「サンプル ファイルの格納場所」を参照してください。

  • 使用できるサンプルの最新バージョンと完全な一覧については、オンラインの Visual Studio 2008 Samples のページを参照してください。

  • サンプルは、コンピュータのハード ディスク上にもあります。既定では、サンプルおよび Readme ファイルは、\Program Files\Visual Studio 9.0\Samples\ の下のフォルダにコピーされます。Visual Studio Express Edition の場合、すべてのサンプルはオンライン上にあります。

サンプルのビルドと実行

このサンプルをビルドして実行するには

  1. ソリューション ファイル AutoThread.sln を開きます。

  2. [ビルド] メニューの [ソリューションのビルド] をクリックします。これで、クライアントとサーバーがビルドおよび登録されます。

  3. ActiveX コントロール テスト コンテナの 2 つのインスタンスを開始します。テスト コンテナへのアクセス方法については、「テスト コンテナでのプロパティとイベントのテスト」を参照してください。

  4. クライアント コントロールの 1 つ (AutoCtl クラス) を各テスト コンテナに挿入します。

  5. コントロールを 1 つクリックします。サーバーから値が返されるまでに 1 秒かかります。

  6. テスト コンテナの位置とサイズを変更し、両方のコンテナが同時に見えるようにします。

  7. コントロールを 1 つクリックし、その直後にもう 1 つのコントロールもクリックします。待機時間はほぼ同じであることがわかります。CAtlAutoThreadModule を使用しなかった場合、最初のコントロールは 1 秒後に終了しますが、2 番目のコントロールは最初のコントロールが終了してから 1 秒経過した後に終了します。最初のコントロールが終了するまで、2 番目のスリープは呼び出されません。Delay(PropGet) メソッドと Delay(PropPut) メソッドを使用すると、サーバーがスリープする時間をミリ秒単位で調節できます。時間を適切に設定すると、最初のスリープの呼び出しの前に 2 番目のスリープの呼び出しが戻る場合があります。

サンプルの動作

サーバー インターフェイスには、Sleep という 1 つのメソッドがあります。このメソッドは、サーバー スレッドを一定時間スリープ状態にします。サンプルのクライアント部分は、ユーザーがコントロールをクリックしたときにサーバーのスリープ メソッドを呼び出す ActiveX コントロールです。また、クライアントには、サーバー スレッドのスリープ時間を表す Delay というプロパティもあります。コントロールでは、ユーザーのクリックを待機しているときに "Ready" と表示されます。サーバーのスリープが終了するのを待機しているときは、"Waiting" と表示されます。

キーワード

このサンプルでは、次のキーワードを使用します。

AtlGetObjectSourceInterface; BEGIN_SINK_MAP; CoCreateInstance; DECLARE_CLASSFACTORY_SINGLETON; IDispEventSimpleImpl::DispEventAdvise; END_SINK_MAP; IConnectionPointContainerImpl; IConnectionPointImpl; IDispEventImpl; OLE2CT; SINK_ENTRY_EX; SysAllocString; USES_CONVERSION; VARIANT; VariantClear; VariantCopy

参照

その他の技術情報

ATL サンプル