vbmthread多线程库简单易用,适用于vb6和vba32(在github上下载)
VbMThread库介绍:
方法:
Function Create(Owner As IThread, [Key As String]) As Boolean
创建子线程,key 为创建的每一个子线程命名,方便后续操作
Function Terminate(Wait As Boolean) As Boolean
退出当前子线程
Sub Cancel()
取消当前子线程
属性:
Property hThread As Long
返回子线程句柄,只读
Property Priority As ThreadPriorityConstants
设置子线程的优先级。
Property Suspended As Boolean
设置子线程是否休眠(挂起)状态
Property ThreadID As Long
返回子线程的线程ID,只读
事件:
Event PriorityChanged(OldPriority As ThreadPriorityConstants, NewPriority As ThreadPriorityConstants)
事件:子线程优先级发生变化
Event SuspendedChanged()
事件:子线程休眠状态发生变化
对象:
IThread
Sub BackgroundProcedure(Key As String, StatusCallback As IThreadStatusCallback, Data As ThreadData)
子线程 调用函数或过程或类。
注:任何在BackgroundProcedure中,调用主线程的有关窗体、控件,都可能会引起vb6/VBE崩溃。
Sub Complete(Key As String, Data As ThreadData)
当子线程调用完成或取消时。
Sub StatusCallback(Key As String, Argument1, Argument2)
即BackgroundProcedure调用的函数运行完后,触发StatusCallback ,并将argument参数回调给主线程
注:有关主线程的窗体、控件的调用或引用,都只能在StatusCallback中
只有一个方法
Raise(Argument1], [Argument2])
用来告诉主线程,函数运行完成。并将argument参数传给主线程。
整个VBMThread线程库原理非常简单:即创建一个子线程,让子线程执行一段函数或过程,函数或过程执行完,通过argument参数将结果传给主线程,然后
销毁子线程。
注:在vba中一般cpu有几核就创建几个线程,不要太多(最好一个主线程,一个子线程辅助计算,调用就够了),vb6编译完之后则几乎不受限制。
[此贴子已经被作者于2025-12-28 15:54编辑过]