私たちの状況を説明するのは難しいです。
3層アプリケーションがあります。エンジンは C++ でコーディングされた DLL であり、API 呼び出しを介してエンジンにアクセスする VB6 ActiveX EXE があり、最上位には相互運用 DLL で中間層を呼び出す Excel アドイン (VSTO フレームワークを使用した C#) があります。 . この時点で、アドインからエンジンへの「接続」ごとに新しい EXE が作成され (VB6 は API 呼び出しを使用してエンジンにアクセスします)、すべて正常に動作します。現在、中間層を .NET に移動しています。「おそらく」正常に動作します (ユニット テストはすべてパスします) が、2 つの「接続」を同時に開いたときにエラーが見つかりました (アップ、ユニット テストなしでこの状況を確認します)。これは新しい動作だからです)。DLL には、同じプロセス内のすべてのインスタンスで共有される静的オブジェクトがあり、「接続」間の相互作用があります。私たちの古いバージョンでは、それぞれの「接続」
この質問のヒントに従ってください。中間層でプロセス外オブジェクトを実行するために C# で COM EXE を作成しようとしましたが、結果は同じでした。それらは静的オブジェクトを共有し、最後に、各接続は独立したプロセスを作成しません。
API呼び出しをATLに移動するか、静的オブジェクトをハンドル付きのインスタンス化可能な参照に変更し、すべてのAPI呼び出しを変更してこのハンドラーを取得/設定することは明らかですが、現時点では手頃な価格ではありません。MS All-in-one ですべての例を確認しましたが、解決策が見つかりませんでした。一度に 1 つの接続のみを保持することもできません。各ワークブックは 1 つの接続を持つことができます。将来的には、同時に複数の接続を持つ Web アプリケーションを調査したいと考えています。
なにか提案を?
前もって感謝します、