Share via


AutoThread サンプル:CAtlAutoThreadModule の使用を示します

AutoThread サンプルでは、CAtlAutoThreadModule の使用例を示します。 このサーバーは、Server.exe ファイルで実装されます。 The module of the EXE is derived from CAtlAutoThreadModuleinstead of CAtlModule.

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

セキュリティに関するメモセキュリティに関するメモ

このサンプル コードは概念を示すためのものであり、その概念に関連するコードのみを示しています。特定の環境について必ずしもセキュリティ要件を満たしていませんので、そのまま使用しないでください。セキュリティおよびエラー処理コードを追加して、プロジェクトをより安全かつ堅牢にすることをお勧めします。これらのサンプル コードは、現状有姿のままで提供されるものであり、一切保証されていません。

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

Visual Studio のサンプルにアクセスするには

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

    既定では、これらのサンプルは drive:\Program Files\Microsoft Visual Studio 10.0\Samples\ にインストールされています。

  • このサンプルの最新版および他のサンプルの一覧については、MSDN Web サイト上で Visual Studio サンプル 」を参照してください。

サンプルのビルドと実行

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

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

  2. From the Build menu, click Build Solution. これで、クライアントとサーバーがビルドおよび登録されます。

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

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

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

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

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

サンプルの動作

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

Keywords

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

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 サンプル