VB創(chuàng)建多線程應(yīng)用程序(二)

字號:

源代碼如下:
    窗體中的代碼:
    Option Explicit
    ’開始
    Private Sub Command1_Click()
     On Error Resume Next
     With myThreadleft
     .Initialize AddressOf Fillleft ’傳遞過程地址給線程
     .ThreadEnabled = True
     End With
     With myThreadright
     .Initialize AddressOf Fillright
     .ThreadEnabled = True
     End With
     With myThreadbottom
     .Initialize AddressOf Fillbottom
     .ThreadEnabled = True
     End With
     MsgBox "多線程正在運行...,看看圖片框控件的變色效果!", 64, "信息"
     ’終止線程運行
     Set myThreadleft = Nothing
     Set myThreadright = Nothing
     Set myThreadbottom = Nothing
    End Sub
    ’結(jié)束
    Private Sub Command2_Click()
     Unload Me
    End Sub
    模塊中的代碼:
    Option Explicit
    ’時間計數(shù)API
    Private Declare Function GetTickCount Lib "kernel32" () As Long
    ’聲明cls_thread類的對象變量
    Public myThreadleft As New cls_thread, myThreadright As New cls_thread, myThreadbottom As New cls_thread
    Sub Main()
     Load Form1
     Form1.Show
    End Sub
    Public Sub Fillleft()
     Static Bkgcolor As Long
     Dim LongTick As Long, Longcounter As Long
     On Error Resume Next
     For Longcounter = 0 To 3000
     DoEvents
     Bkgcolor = Longcounter Mod 256
     Form1.Picture1.BackColor = RGB(Bkgcolor, 0, 0)
     LongTick = GetTickCount
     While GetTickCount - LongTick < 10 ’延時10毫秒,下同
     Wend
     Next
     Set myThreadleft = Nothing ’如果循環(huán)結(jié)束則終止當(dāng)前線程運行,下同
    End Sub
    Public Sub Fillright()
     Static Bkgcolor As Long
     Dim LongTickValue As Long, Longcounter As Long
     On Error Resume Next
     For Longcounter = 0 To 3000
     DoEvents
     Bkgcolor = Longcounter Mod 256
     Form1.Picture2.BackColor = RGB(0, Bkgcolor, 0)