我正在为用 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 查询,但效果不佳,并尝试使用多个线程,这只是遇到受保护的内存问题。
你能提供的任何建议都会很棒。几天来一直试图解决这个问题。谢谢。