VB6 で記述された ActiveX DLL が C++ DLL を呼び出しているプロジェクトがあります。ActiveX DLL は、ASP の「CreateObject」呼び出しを介して IIS 7 から読み込まれます。
Web ユーザーが 1 人だけサイトにアクセスしている場合は、すべてが完全に機能します (何千回もの繰り返しでテストされています)。2 人以上の同時ユーザーがサイトにアクセスするとすぐに、1 つ以上のユーザー セッションがクラッシュします (多くの場合、500 エラーで)?
これは、C++ DLL が適切にスレッドセーフではないことが原因ではないかと考えたので、グローバル ミューテックスを使用してアクセスを制限するように書き直しました。これは効果がありませんでした。
正直に言うと、VB6 ActiveX DLL の各インスタンスはシングルスレッド アパートメントで実行されるため、これは問題にならないと思っていたのでしょうか?
ここで何が起こっているのか、誰かに光を当てることができますか? IIS が VB6 ActiveX DLL の複数のインスタンスをロードしたときに何が起こるか、正確には理解していないようです。