「DllSurrogate」メソッドを使用して、64ビットのC#exeが32ビットのC#dllと通信できるようにしています。 この方法はHosting a .NET DLL as an Out-Of-Process COM Server (EXE)に記載されています。アプリケーションが終了したときにプロセスのdll( 'dllhost.exe' 'COM Surrogate')を強制終了する最も良い方法はありますか?
「dllhost.exe * 32」という追加のプロセスが実行されると、タスクマネージャーに「COM Surrogate」という説明が自動的に表示されます。 これは、アプリケーションと32ビットdllのリンクです。
私が抱えている問題は、アプリケーションが終了するとこのプロセスが強制終了されないことです。 誰かがこれに対処するための推奨される方法を提案できますか?
私は、プロセスを見つけて、私のアプリを閉じてそれを殺すが、私は確認する必要がありますできます
- それは、別のアプリケーションに属する1つの私の「COMサロゲート」ではありません。
- 私のアプリケーションの別の実行インスタンスでは使用されていません。
私のアプリケーションとこのプロセスを直接確認できるリンクはありますか?
Windowsのコンポーネントサービス(同じサロゲートテクノロジに依存する「com +アプリケーション」)を使用する方がずっと簡単です。クールなUIダイアログにアクセスして、どのようにシャットダウンするかなど、多くのことを実行できます –
本当ですか?最近私はそれを調べたところ、COM +は非常に難しい作業であり、このアプローチははるかに単純でした。これは、これがスタンドアロンのWindowsアプリケーションであり、外部の顧客によってダウンロードされてインストールされている点で違いがありますか? –
これは15年以上も同じことです。 「COM +」は単なるファンシーな(本当に?)マーケティング名です。コンポーネントサービスは、それを上回るUIです。もちろん、ロード中は、dllhost.exeも使用されます(アウトオブプロセスの場合、「ライブラリ」モードではなく「インプロセス」と呼ばれます)。このすべてをプログラムでインストールしたい場合は、スクリプトのサポートもあります。 –