如果vb6没有线程,用户控件如何异步运行?

时间:2013-11-29 11:39:33

标签: vb6

this well known article.中所述。

据我了解,线程是在单个进程中发生的事情,其中​​同时执行的多个进程的外观是通过轮换共享单个线程来给出的。

如果vb6不方便,vb6程序如何同时做两件事?

1 个答案:

答案 0 :(得分:4)

就一次做两件事而言......它确实如此,而事实并非如此。

您通常在VB6中编写的100%代码在用户界面线程上作为事件处理程序运行。这些预期会运行以执行一些工作,然后返回到“生活在”运行时的主消息循环,并在消息队列为空时休眠等待请求。

许多通常用C ++编写的组件都有工作线程,可以并行运行。这些通常会触发COM事件或回调,或者向VB6程序隐藏的最顶层窗口发送一个窗口消息,该窗口被消息循环拾取并调度到approriate事件处理程序或回调例程。系统事件也可以发送窗口消息,这就是击键和鼠标操作等方式进入VB6程序的过程。

这与任何 Windows子系统程序的运行方式相差无几,无论它是用什么语言编写的。唯一的区别在于,您无法轻易创建临时工作线程你自己的VB6。

低级API回调是另一回事,确实可以导致在工作线程上运行VB6代码。如果不小心使用,这可能是危险的,因为这些线程通常甚至没有对它们进行COM初始化,如果你试图执行需要它的VB6语句,这会导致一个令人讨厌的崩溃(而且很多)。

相关问题