DelphiXEで開発されたWin32COMオブジェクトがあります。Delphiで開発されたテストプログラムから、スレッドでCOMオブジェクトを開始できます。デバッグすると、実行中のCOMオブジェクトが呼び出し元のルーチンによって作成されたスレッド内にあることがわかります。
Delphiテストアプリケーションで実行されたのと同じスレッド実行レシピを使用して開発されたサービスであるC#アプリケーションでは、同じ動作は見られません。COMオブジェクトは、それを実行するC#スレッド内では実行されません。Kernel32.dllを使用GetCurrentThreadID()
してWindowsハンドルを取得しました。COMオブジェクトからWindowsスレッドハンドルを監視する場合、それは常に同じハンドルです。実行中のスレッドのハンドルではありません。
C#スレッド内でCOMオブジェクトを実行し、スレッド内に存在させることは可能ですか?基本的に、COMオブジェクトのC#スレッドから同じWindowsスレッドハンドラーを取得するにはどうすればよいですか?
C#スレッドはMTAです。
/ブライアン