IIS6でホストされているWebサービスで使用されるサードパーティのdllがあります。問題は、このdllがメモリにロードされると、それを作成したスレッドとは異なるスレッドがdll内のコードを実行しようとすると、例外AccessViolationExceptionがスローされることです。ワーカープロセスはマルチスレッドであり、Webサービスへの各呼び出しはプールからランダムなスレッドを取得します。メモリからアンロードし、必要になるたびにリロードしようとしましたが、フロントエンドのみが.Netであり、残りは管理されていないため、実際にメモリから完全にアンロードされることはありません。VBと.Net2.0を使用しています。助言がありますか?
(ロブウォーカーへの応答)
新しいスレッドを作成し、それを使用してdllを呼び出すことを検討しましたが、スレッドを停止させて呼び出しを待機するにはどうすればよいですか?.Net 3.0で提供されるDispatcherクラスを使用せずに、どのようにして呼び出しをスレッドに委任しますか?非表示のフォームを作成してメッセージループに入れるとうまくいく場合があります。次に、フォームのInvoke()メソッドを呼び出すことができます。しかし、IISでホストされているWebサービス内にフォームを作成すると、多くの問題が発生することがわかります。