15

如何在visual basic 6.0中实现多线程。如果有人可以举个例子,那就太好了。

4

5 回答 5

14

VB6 对于多线程应用程序来说并不是一个非常好的环境。没有开箱即用的支持,您需要深入研究标准的WinAPI函数。看看这篇文章,它提供了一个相当全面的示例:

http://www.freevbcode.com/ShowCode.Asp?ID=1287

于 2008-09-21T01:33:04.053 回答
9

在几个项目中,我使用多个进程在 VB6 中实现了异步处理。基本上在一个与主进程分开的活动 exe 项目中有一个工作线程。然后可以将 worker exe 传递给它需要的任何数据并启动,引发一个事件以表示它已完成或主进程有数据。

它更消耗资源(一个额外的进程而不是线程),但 VB6 在单线程单元中运行,并且没有任何内置支持来启动新线程。

如果您确实需要在一个进程中拥有多个线程,我建议您考虑使用 .net 或 VC6 而不是 VB6。

于 2008-09-21T01:34:37.997 回答
2

如果您尝试解决的问题是一个长计算并且您希望保持 UI 响应,那么一种可能性是DoEvents在长计算中频繁调用该函数。这样,您的程序可以处理任何 Windows 消息,因此 UI 将响应用户命令。您还可以设置一个取消按钮来指示您的进程需要结束。

如果这样做,则需要小心禁用任何可能导致问题的控件,例如在启动后再次运行长进程。

于 2008-10-20T19:00:39.423 回答
0

您可以在 VB6 中使用 Interop Forms Toolkit 2.0 进行多线程处理。该工具包允许您利用 .NET 功能,而不必被迫升级。因此,您还可以将 .NET 用户控件用作 VB6 中的 ActiveX 控件。

于 2013-01-23T11:26:53.070 回答
0

创建“Active X”控件来管理您的代码。每个控件都有自己的线程。您可以堆叠多个控件来做同样的事情,或者让单独的控件做独特的事情。

EG,你让一个从网上下载文件。添加十个控件,您将运行十个单独的线程下载,与实际程序正在运行的线程无关。本质上,它们都是交互式的窗口,由一个实例化的 mini-dll 程序控制。

没有比这更容易的了。您可以根据需要限制、打开和关闭它们,以及创建更多或删除它们。(索引就像表单上的任何其他“对象”一样。它们都是 active-x 控件,由 vb-runtime dll 简单地管理。)

于 2020-01-01T11:21:22.887 回答