如何在visual basic 6.0中实现多线程。如果有人可以举一个例子,那就太好了。
答案 0 :(得分:14)
VB6对于多线程应用程序来说不是一个非常好的环境。没有开箱即用的支持,您需要深入研究标准的 WinAPI 功能。看一下这篇文章,它提供了一个非常全面的样本:
答案 1 :(得分:9)
在几个项目中,我使用多个进程在VB6中实现了异步处理。基本上在活动的exe项目中有一个与主进程分开的工作线程。然后,worker exe可以传递它需要和启动的任何数据,引发一个事件,说它已经完成或者有主要过程的数据。
这是一个更加耗费资源(一个额外的进程而不是一个线程),但是VB6在单线程单元中运行,并且没有任何内置支持来启动新线程。
如果你真的需要在一个进程中拥有多个线程,我建议使用.net或VC6而不是VB6。
答案 2 :(得分:2)
如果您尝试解决的问题是长时间的计算并且您希望保持UI响应,那么一种可能性是在长时间计算中频繁调用DoEvents
函数。这样,您的程序可以处理任何Windows消息,因此UI将响应用户命令。您还可以设置“取消”按钮,以指示您需要结束的流程。
如果您这样做,那么您需要小心禁用任何可能导致问题的控件,例如在启动后第二次运行长进程。
答案 3 :(得分:0)
您可以在VB6中使用Interop Forms Toolkit 2.0进行多线程处理。工具包 允许您利用.NET功能而不必强制进行升级。因此,您还可以在VB6中将.NET用户控件用作ActiveX控件。
答案 4 :(得分:0)
创建“ Active X”控件来管理您的代码。每个控件都有其自己的线程。您可以堆叠多个控件来做同一件事,或者让单个控件来做独特的事情。
EG,您可以从网上下载文件。添加十个控件,您将运行十个独立的线程下载,而与实际程序正在运行的线程无关。本质上,它们都是交互式的,由实例化的mini-dll程序控制的窗口。
再简单不过了。您可以限制它们,打开和关闭它们,以及根据需要创建更多或删除它们。 (就像在窗体上对其他“对象”进行索引一样。它们全都是active-x控件,这些控件仅由vb运行时dll管理。)