事實上使用Visual Basic的ActiveX exe技術可以輕鬆的實現多執行緒.
原理先不說了,先舉個樣本,有興趣的話大家可以一起討論
1.建立一個工程,類型選擇ActiveX Exe,工程重新命名為TestExe
在工程中添加一個Form,放上一個Timer控制項.
將Class1改名為clsTest,注意其Instancing要設定為5-MultiUse, 以下是其代碼:
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private WithEvents oTimer As Timer
Private frmTmp As Form1
Private lTotalLoop As Long
Private bDoStop As Boolean
Private lInterval As Long
Public Event Progress(ByVal lProgress As Long)
Public Sub StartSub(ByVal lTotal As Long)
lTotalLoop = lTotal
oTimer.Enabled = True
End Sub
Public Sub StopSub()
bDoStop = True
End Sub
Private Sub Class_Initialize()
Set frmTmp = New Form1
Load frmTmp
Set oTimer = frmTmp.Timer1
oTimer.Enabled = False
bDoStop = False
lInterval = 1
End Sub
Private Sub DoLoop()
Dim i As Long
For i = 0 To lTotalLoop
Sleep (lInterval)
RaiseEvent Progress(i)