Visual Basic 6.0中的多线程处理

问题描述 投票:15回答:5

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

vb6
5个回答
14
投票

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

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


9
投票

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

这会占用更多的资源(一个额外的进程,而不是一个线程),但是VB6在单个线程单元中运行,并且没有内置的支持来启动新线程。

如果您真的需要在一个进程中包含多个线程,我建议您考虑使用.net或VC6而不是VB6。


2
投票

如果您要解决的问题是长时间计算,并且您想要使UI保持响应,那么一种可能是在长时间计算中频繁调用DoEvents函数。这样,您的程序可以处理任何Windows消息,因此UI将响应用户命令。您还可以设置一个“取消”按钮来向您的进程发出信号,表明它需要结束。

如果执行此操作,那么您将需要小心禁用任何可能导致问题的控件,例如在启动长过程后第二次运行长过程。


0
投票

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


0
投票

创建“ Active X”控件来管理您的代码。每个控件都有其自己的线程。您可以堆叠多个控件来执行相同的操作,也可以让单个控件执行唯一的操作。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.