この質問は、Marc Gravellが私の質問に対して行った回答のフォローアップです。C#/。NetでアウトオブプロセスCOMを作成しますか?。私は彼の提案した解決策を選択しましたが、現在は別の問題で実行されています。
これが私の状況です:
- 「DataProvider」COMコンポーネントをC#で実装しました
- このコンポーネントはCOM+サーバーアプリケーションでホストされるため、複数のプロセスがDataProviderの同じインスタンスにアクセスできます
- COMを介してデータプロバイダーにアクセスできるプロセスの種類は、Matlab、VBスクリプト、および.Netアプリケーションです。
MatlabまたはVBスクリプトからCOMDataProviderをインスタンス化すると、COM +メカニズムが起動し、DataProviderの単一のインスタンスを使用できることを確認できます。
問題は、.NetからCOM+マネージドインスタンスにアクセスしようとすると発生します。基本的に、COMコンポーネントが.Net DLLに基づいている場合、遅延読み込みがあっても、.Netは常にDLLを見つけてそこからオブジェクトをインスタンス化し、COMメカニズム全体をスキップするように見えます。これはパフォーマンスに期待されていますが、私の場合は役に立ちません。
ここで質問があります。COMメカニズムを使用して.Netアプリケーションで.Netで記述されたCOMコンポーネントをインスタンス化することは可能ですか?
次のコードはCOMメカニズムを使用しないことに注意してください。
Type type = Type.GetTypeFromProgID(progID);
return Activator.CreateInstance(type);