VB6dllを呼び出す必要があるマルチスレッドWindowsサービスを実行しています。このVB6dllに関するドキュメントはなく、このレガシーシステムは非常に重要なビジネスプロセスをサポートしています。
初めて(最初のスレッド)、このdllはうまく機能します。他のスレッドがアクセスする必要があるため、間違った結果を提供し始めます。
私は言っている一人の男を読んだ:
「VB6を使用している場合は、1つだけ注意してください。マルチスレッドサービスを実行している場合は、スレッドモデルを変更してアパートメントをサポートする必要があります。VBは複数のシングルスレッドアパートメントのみをサポートしますが、.NETは通常は完全にフリースレッドで実行されます。VB6DLLを呼び出すスレッドは、DLLと互換性がある必要があります。」
チームの別の人が、このddlを別のアプリケーションドメインに配置するというアイデアをくれました。確信はないけど。
マルチスレッドのc#Windowsサービスアプリケーションから呼び出されたVB6 dllをどのように操作できますか?