方法 : ShowDialog メソッドで Windows フォームを表示して COM 相互運用機能をサポートする
更新 : 2007 年 11 月
コンポーネント オブジェクト モデル (COM) 相互運用機能に関する問題は、Windows フォームを .NET Framework メッセージ ループに表示することで解決できます。このメッセージ ループは、Application.Run メソッドを使って作成します。
COM クライアント アプリケーションからフォームを正しく動作させるには、フォームを Windows フォーム メッセージ ループで実行する必要があります。この場合、次のいずれかの方法を使用します。
Form.ShowDialog メソッドを使って、Windows フォームを表示する。
各 Windows フォームを別個のスレッドに表示する。詳細については、「方法 : 独自のスレッドで各 Windows フォームを表示して COM 相互運用機能をサポートする」を参照してください。
共有メッセージ ループを .NET Framework コンポーネントの新しいスレッドに作成する。詳細については、「方法 : 共有スレッド上に Windows フォームを表示することで COM 相互運用をサポートする」を参照してください。
手順
.NET Framework メッセージ ループにフォームを表示するには、Form.ShowDialog メソッドを使用するのが最も簡単な方法です。この方法では、実装するコードが最も少なくて済みます。
Form.ShowDialog メソッドは、アンマネージ アプリケーションのメッセージ ループを中断し、フォームをダイアログ ボックスとして表示します。ホスト アプリケーションのメッセージ ループが中断されるため、Form.ShowDialog メソッドは、新しい .NET Framework メッセージ ループを作成して、フォームのメッセージを処理します。
ただし、Form.ShowDialog メソッドを使用した場合は、フォームがモーダル ダイアログ ボックスとして開かれるという欠点があります。この動作により、Windows フォームが開いている間は、呼び出し元のアプリケーションのユーザー インターフェイス (UI) がすべてブロックされます。ユーザーがフォームを終了すると、.NET Framework メッセージ ループが閉じ、アプリケーションの以前のメッセージ ループが再び実行を開始します。
Windows フォームでは、フォームを表示するメソッドを含むクラス ライブラリを作成し、そのクラス ライブラリを COM 相互運用機能用として構築できます。この DLL ファイルは、Visual Basic 6.0 または MFC (Microsoft Foundation Class) から使用でき、これらの環境のどちらからでも Form.ShowDialog メソッドを呼び出してフォームを表示できます。
ShowDialog メソッドで Windows フォームを表示して COM 相互運用機能をサポートするには
- Form.Show メソッドへのすべての呼び出しを、.NET Framework コンポーネントに含まれる Form.ShowDialog メソッドへの呼び出しに置き換えます。
参照
処理手順
方法 : 独自のスレッドで各 Windows フォームを表示して COM 相互運用機能をサポートする
方法 : 共有スレッド上に Windows フォームを表示することで COM 相互運用をサポートする
概念
COM への .NET Framework コンポーネントの公開