IIS6でホストされているWebサービスで使用されているサードパーティのDLLがあります。問題は、いったんこのdllがメモリにロードされると、それを作成したスレッドと異なるスレッドがdll内のコードを実行しようとすると例外AccessViolationExceptionがスローされることです。ワーカープロセスはマルチスレッドであり、Webサービスへの各呼び出しはプールからランダムなスレッドを取得します。私たちはそれをメモリからアンロードしようとしましたが、必要になるたびにリロードしましたが、フロントエンドだけが.Netで残りは管理されていないので、メモリから完全にアンロードされることはありません。私たちはVBと.Net 2.0を使用しています。助言がありますか?IISでコードを実行するために同じスレッドを使用する方法を教えてください。
(ロブ・ウォーカーへの対応)
私たちは、新しいスレッドを作成し、DLLを呼び出すためにそれを使用して考えたが、どのように我々は、スレッドが座って呼び出しを待つ作るのですか? .Net 3.0で提供されたDispatcherクラスを持たないスレッドへの呼び出しをどのように委譲しますか?隠れたフォームを作成し、それをメッセージループに入れることができます。そして、フォームのInvoke()メソッドを呼び出すことができます。しかし、IISでホストされているWebサービス内にフォームを作成すると、多くの問題が発生することがあります。