サンプルを接続します。実装および接続ポイント (C++ サンプル) の使用例を示します
このサンプルは、マルチスレッド環境での使用との接続ポイント (IConnectionPointContainerIConnectionPoint インターフェイス) の実装を示します。
注意
このサンプルは、コネクション ポイント シンクに対するコンパイラの COM サポートを示すために、ATL の Connect サンプルを作成し直したものです。Drive クライアントはネイティブな実装ですが、MDrive クライアントは、シンク オブジェクトを作成するためのクラス ファクトリの使用で、COM の正確な動作をいくらか強調しています。Drive および MDrive は、COM サポートを ATL または MFC には一切依存していません。
セキュリティに関するメモ |
---|
このサンプル コードは概念を示すためのものであり、その概念に関連するコードのみを示しています。特定の環境について必ずしもセキュリティ要件を満たしていませんので、そのまま使用しないでください。セキュリティおよびエラー処理コードを追加して、プロジェクトをより安全かつ堅牢にすることをお勧めします。これらのサンプル コードは、現状有姿のままで提供されるものであり、一切保証されていません。 |
サンプルとそのインストール手順を取得するには
Visual Studio のサンプルにアクセスするには
[ヘルプ] メニューの [サンプル] をクリックします。
既定では、これらのサンプルは drive:\Program Files\Microsoft Visual Studio 10.0\Samples\ にインストールされています。
サンプルのビルドと実行
このサンプルをビルドして実行するには
ソリューション ファイル connect.sln を開きます。
で メニューを作成、ソリューションのビルド をクリックします。
実行するクライアント (Drive と MDrive のいずれか) を選択します。次に、プロジェクト フォルダーを右クリックし、[スタートアップ プロジェクトに設定] をクリックして、そのクライアントをスタートアップ プロジェクトに指定します。 クライアントの詳細については、「サンプルの動作」のセクションを参照してください。
でデバッグ メニューの、[デバッグなしで開始 をクリックします。
サンプルの動作
Connect.dll では、サーバーが実装されています。 この DLL の CoRandom C++ クラスによって実装が CRandom COM オブジェクトを作成できます。 IRandom (デュアル インターフェイス) と IConnectionPointContainer、COM オブジェクトをサポートし、 IRandomEvent インターフェイスに対する接続を許可します。
IRandom インターフェイスは、以下のメソッドをサポートします。
Start オブジェクト内でスレッドを開始します。
Stop オブジェクト内でスレッドを中断します。
StopAll 実行中のスレッドをすべて中断します。
実行時には、コネクション ポイントに達するまで、オブジェクト内のセカンダリ スレッドがイベントを発生させます。
2 つのクライアントが用意されています。ドライブと MDrive。 これらのクライアントは、Drive サブディレクトリと MDrive サブディレクトリにあります。
Drive.exe は、IRandomEvent インターフェイスを実装する 1 つのオブジェクトが設定されている、簡単なコンソール アプリケーションです。 CoRandom オブジェクトを作成し、コネクション ポイントで Advise と Unadvise を呼び出して、ドライブのオブジェクトへのイベントを CoRandom オブジェクトに発生させます。
Mdrive.exe は、MFC ダイアログ ベースのアプリケーションであり、複数のアドバイズ シンクを作成し、サーバーが作成するスレッド数を制御できます。 Mdrive.exe を実行する場合は、[Start] ボタンを少なくとも 1 回クリックしてから、Advise ボタンを複数回クリックします。 [Advise] をクリックするたびにコネクション ポイントが 1 つ追加され、ディスプレイの幅が広くなります。Advise [Advise] をクリックしない場合、ディスプレイは変化しません。Advise