VB6稳定多线程,一直是争论很大的的。
比较稳定的多线程,一般使用
set MT=CreateObject("VbMT.MT")
但其他单元线程之间,是无法访问的,只有在创建者中,才可使用该对象MT.
还有一个问题,如果设置单元线程停止,一般通过设置属性,比如MT.bStop=True,设停止参数,
然后再单元线程中通过检测bStop而退出的。
但问题来了,如果单元线程挂起,通过MT.bStop=True,会让当前线程死锁状态。程序不能执行下去的。
所以问题来了,不能通过设置对象的属性方法了。这个时候,必须通过地址方法设置。
所以,取得类模块的函数地址,变量地址,通过回调函数函数指针,直接执行函数,是不会死锁的。
下面给出求类模块函数地址的方法:
Private Function GetClassProcAddress(ByVal SinceCount As Long) As Long
'***************************************************************************************************
' VB6 历史上最简单的获取类中指定函数地址的函数诞生了,can be get address of property to value ,too
'******************************************************************************************