Visual Basic 6.0中的多线程
时间:2020-03-06 14:29:51 来源:igfitidea点击:
如何在Visual Basic 6.0中实现多线程。如果有人可以举一个例子,那就太好了。
解决方案
对于多线程应用程序来说,VB6并不是一个很好的环境。没有现成的支持,我们需要深入研究标准WinAPI函数。看一下这篇文章,它提供了相当全面的示例:
http://www.freevbcode.com/ShowCode.Asp?ID=1287
在几个项目中,我已经使用多个过程在VB6中实现了异步处理。基本上在活动exe项目中具有与主进程分离的工作线程。然后,可以将工作程序exe传递给它所需的任何数据,然后启动它,并引发一个事件以表明已完成或者主进程有数据。
这会占用更多的资源(一个额外的进程而不是一个线程),但是VB6在单线程单元中运行,并且没有内置的支持来启动新线程。
如果我们真的需要在一个进程中包含多个线程,我建议我们考虑使用.net或者VC6而不是VB6.
如果我们要解决的问题是长时间计算,并且我们希望保持UI响应,那么一种可能性是在长时间计算中频繁调用DoEvents
函数。这样,程序可以处理任何Windows消息,因此UI将响应用户命令。我们还可以设置一个"取消"按钮,以告知过程需要结束。
如果这样做,则将需要小心禁用任何可能导致问题的控件,例如在启动长进程后第二次运行该长进程。