Sub Main()
創(chuàng)新互聯(lián)服務(wù)項目包括鼓樓網(wǎng)站建設(shè)、鼓樓網(wǎng)站制作、鼓樓網(wǎng)頁制作以及鼓樓網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,鼓樓網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到鼓樓省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
Dim thr As Thread
For Pi As Integer=0 To 4 //啟用5線程
MulParams =Pi vbTab sFile vbTab dFile vbTab 1 vbTab DelN vbTab cr vbTab cg vbTab cb vbTab IndexI
GlobalParamas(pi)=MulParams .Split(vbTab)
thr=New Thread(AddressOf MyMulThreadCaller)
thr.Start() //啟動多線程進(jìn)程
Application.DoEvents
Next
End Sub
首先,你把你那些要運行很久的過程。盡量放在一個過程中。
因為線程只能是過程,不能使函數(shù),沒有返回值的。
然后,在某個事件下這樣寫:
**這里我假設(shè)你的那個很就的過程叫做 sub aaa()
調(diào)用如下:
Dim mythread As New System.Threading.Thread(AddressOf aaa)
mythread.Start()
***********
這樣就是定義一個線程,名字叫 mythread,這個線程會運行aaa這個過程。
start 就是讓線程運行。
多線程就是這樣的。界面線程是主線程,你這個Form_Load就是運行在主線程上的線程,而Thread1,Thread2是由主線程啟動的。這個啟動不是線性的。
主線程只是通知系統(tǒng),請啟動一個線程運行某某函數(shù)。
而哪個線程先運行完全在系統(tǒng)決定。甚至可能主線程執(zhí)行到Thread1.Abort() ,Thread2.Abort()的時候這兩個線程都還沒有啟動起來,所以你會遇到兩個變量都是空值這種情況。
雖然你的想法是在 LoginBtn_Click 事件中將復(fù)雜的操作分離出去以減輕UI的負(fù)擔(dān), 這很好完全沒有問題.
但是問題在于 Me.Invoke(dh)這里,若是ChkLogin里面仍然是大規(guī)模的操作呢 你的代碼就又變成將很復(fù)雜的操作扔給了UI, 當(dāng)然會出現(xiàn)窗體無法拖動的情況了.
解決辦法很簡單, 很多種. 將ChkLogin()里的操作直接放在DelegateLogin()里面吧 me.invoke僅僅只是做簡單的輕量的刷新之類的操作就好了.
希望能幫上你的忙.