多線程是用于處理復(fù)雜項(xiàng)目的
從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、主機(jī)域名、網(wǎng)站空間、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。
打個(gè)比方
你的主程序線程A中有個(gè)循環(huán),由于代碼是一行行走的,所以循環(huán)結(jié)束前下面的代碼無(wú)法運(yùn)行,而此時(shí)主界面的反應(yīng)就類似卡死的樣子,你點(diǎn)擊按鈕也沒有反應(yīng),因?yàn)橹骶€程在忙著循環(huán)呢,所以對(duì)按鈕的事件代碼要等待了,如果要避免這種情況,就要用到多線程,另開一個(gè)新線程專門用來(lái)執(zhí)行循環(huán)代碼,主界面就不會(huì)卡死了,只要在循環(huán)結(jié)束后將結(jié)果傳回主線程調(diào)用就可以了,再?gòu)?fù)雜點(diǎn)要涉及到委托,控制了
按你的要求其實(shí)你的代碼用不到多線程,只要把sleep放到兩段代碼中間就可以了。
新線程結(jié)束用thread.abort()
Private?Sub?Button1_Click(sender?As?Object,?e?As?EventArgs)?Handles?Button1.Click
For?s?=?1?To?11?Step?10
t1?=?New?Threading.Thread(AddressOf?setA)
t2?=?New?Threading.Thread(AddressOf?setB)
t3?=?New?Threading.Thread(AddressOf?setC)
t4?=?New?Threading.Thread(AddressOf?setD)
t5?=?New?Threading.Thread(AddressOf?setE)
t6?=?New?Threading.Thread(AddressOf?setF)
t7?=?New?Threading.Thread(AddressOf?setG)
t8?=?New?Threading.Thread(AddressOf?setH)
t9?=?New?Threading.Thread(AddressOf?setI)
t10?=?New?Threading.Thread(AddressOf?setJ)
錯(cuò)誤》》》???t1.Start()
t2.Start()
t3.Start()
t4.Start()
t5.Start()
t6.Start()
t7.Start()
t8.Start()
t9.Start()
t10.Start()
Next
同樓上,每個(gè)Thread只能運(yùn)行一次
使用api
Private Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
如果需要等待T2線程結(jié)束,那又何必開啟這個(gè)線程??!
直接:
Label1.Visible = True
setB()
MsgBox("d")
這不就是執(zhí)行完setB(),再執(zhí)行MsgBox("d"),多線程是多余的。
多線程的作用大多數(shù)也就用來(lái)同時(shí)執(zhí)行多任務(wù)而不用等待的。