如题

解决方案 »

  1.   

    多线程就是可以同时执行多个任务,VB在这方面功能不强。
    给你一些源代码吧!
    先做一个类模块
    Public Sub Initialize(ByVal lpfnbasfunc As Long) '³õʼ»¯Ïß³Ì
       Dim lStacksize As Long, lCreationflags As Long, lpThreadid As Long, lNull As Long
       On Error Resume Next
       lNull = 0 '´´½¨Ò»¸ö¿ÕÖ¸Õë
       lStacksize = 0 'ÓÃ0±íʾÓÃEXEµÄstack size
       lCreationflags = CREATE_SUSPENDED '±íʾ³õʼ»¯ºóÏȲ»¼¤»î£¬ÈñðÈËÀ´¼¤»î
       uThread.Handle = CreateThread(lNull, lStacksize, lpfnbasfunc, lNull, lCreationflags, lpThreadid)
       
       If uThread.Handle = lNull Then MsgBox "´´½¨Ï̴߳ì°Ü£¡£¡"
    End SubPublic Property Get Enabled() As Boolean
       On Error Resume Next
       Enabled = uThread.Enabled
    End PropertyPublic Property Let Enabled(ByVal vNewValue As Boolean)
       On Error Resume Next
       If vNewValue And (Not uThread.Enabled) Then
          Resumethread uThread.Handle '¼¤»îÏß³Ì
          uThread.Enabled = True ''''''''''''''''''''''
          ElseIf uThread.Enabled Then
             SuspendThread uThread.Handle
             uThread.Enabled = False
        End If
    End PropertyPublic Sub Class_Terminate() 'ÖÕÖ¹Ïß³Ì
       On Error Resume Next
       Call TerminateThread(uThread.Handle, 0)
    End Sub
    一个标准模块
    Public Sub AA()
    MsgBox "ddddd"
    End Sub
    一个窗体
    Dim a As Long
    Public myThreadTop As New clsThreads '´´½¨µÚÒ»¸öÏß³Ì
    'Public myThreadBottom As New clsThreads '´´½¨µÚ¶þ¸öÏß³Ì
    Private Sub Command1_Click()
    On Error Resume Next
    myThreadTop.Initialize AddressOf AA
    myThreadTop.Enabled = TrueEnd SubPrivate Sub Command2_Click()
    myThreadTop.Class_Terminate
    Set myThreadTop = Nothing
    End SubPrivate Sub Form_Unload(Cancel As Integer)
    'Set myThreadTop = Nothing
    myThreadTop.Class_Terminate
    Set myThreadTop = Nothing
    End Sub