VB6で記述されたEXE用のC#DLLプラグインを作成しています。EXEのソースにアクセスできません。DLL自体が機能し、EXEと正常に通信します。
イベントのプロセスは次のとおりです。
- ユーザーがEXEでコマンドを発行すると、DLL内の関数が呼び出され、オブジェクトがパラメーターとして渡されます。
- DLLは、時間がかかることがあるデータを処理します
DLLは、渡されたオブジェクトの関数を呼び出すことによって応答します。DLL関数自体は何も返しません
public void DoCommand(object CommandSettings) { //ObjectVB6 is my custom class to allow easy calling of COM methods and properties ObjectVB6 CS = new ObjectVB6(CommandSettings); ... //process data CS.CallMethod("MyReply", args); }
私の問題は、(DLLからの)長いクエリ中に、EXEのUIがフリーズすることです。
これを防ぐための最良の方法は何ですか?非同期のMySQLクエリを使用してみましたが、これは良くありませんでした。また、複数のスレッドを使用してみましたが、保護されたメモリの問題が発生しました。
あなたが提供できるどんなアドバイスも素晴らしいでしょう。この問題に何日も対処しようとしてきました。ありがとう。