你真心無聊。
成都創(chuàng)新互聯(lián)公司擁有十多年成都網(wǎng)站建設(shè)工作經(jīng)驗(yàn),為各大企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)服務(wù),對(duì)于網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、重慶APP軟件開發(fā)、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、程序開發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、申請(qǐng)域名等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營銷、管理等網(wǎng)站化運(yùn)作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項(xiàng)目的能力。
多線程就是這樣的。界面線程是主線程,你這個(gè)Form_Load就是運(yùn)行在主線程上的線程,而Thread1,Thread2是由主線程啟動(dòng)的。這個(gè)啟動(dòng)不是線性的。
主線程只是通知系統(tǒng),請(qǐng)啟動(dòng)一個(gè)線程運(yùn)行某某函數(shù)。
而哪個(gè)線程先運(yùn)行完全在系統(tǒng)決定。甚至可能主線程執(zhí)行到Thread1.Abort() ,Thread2.Abort()的時(shí)候這兩個(gè)線程都還沒有啟動(dòng)起來,所以你會(huì)遇到兩個(gè)變量都是空值這種情況。
Imports?System
Imports?System.Threading
Public?Class?Form1
Dim?TestThread1,?TestThread2?As?Thread
Public?Sub?TestMethod1()
Dim?i?As?Integer
i?=?0
While?(i??10)
Label1.Text?=?i
i?+=?1
End?While
End?Sub
Public?Sub?TestMethod2()
Dim?i?As?Integer
i?=?0
While?(i??10)
Label2.Text?=?i
i?+=?1
End?While
End?Sub
Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click
Control.CheckForIllegalCrossThreadCalls?=?False
TestThread1?=?New?Thread(New?ThreadStart(AddressOf?TestMethod1))
TestThread1.Start()
End?Sub
Private?Sub?Button2_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button2.Click
Control.CheckForIllegalCrossThreadCalls?=?False
TestThread2?=?New?Thread(New?ThreadStart(AddressOf?TestMethod2))
TestThread2.Start()
End?Sub
End?Class
Sub Main()
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() //啟動(dòng)多線程進(jìn)程
Application.DoEvents
Next
End Sub