本篇文章為大家展示了VB.NET中怎么并發(fā)性判斷線程狀態(tài),內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)從2013年開始,先為田陽等服務(wù)建站,田陽等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為田陽企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
當(dāng)用戶在寫出多線程程序的時(shí)候,可能***有挑戰(zhàn)性的就是獨(dú)立的線程和程序的其他的部分有并發(fā)性。例如,程序中的一個(gè)獨(dú)立的線程正在處理一系列的名稱,而程序的另一個(gè)部分必須等待這個(gè)線程完成以后才能進(jìn)行,通常處理VB.NET并發(fā)性的線程的辦法就是判斷線程的狀態(tài)或者通過一個(gè)事件去標(biāo)志和得到一個(gè)特征值。
最簡單的,也是效率***的方法就是判斷一個(gè)線程的IsAlive屬性的值,當(dāng)一個(gè)線程在開始(Start)以前它的屬性IsAlive的值是"False",而在它運(yùn)行的過程中,它的屬性IsAlive的值是"True"。這種方法并沒有通過一個(gè)事件去標(biāo)志和得到一個(gè)特征值可靠,而且如果這樣做的慶,也失去了自由線程的很多優(yōu)點(diǎn)和便利之處。例如:
while anotherthread.IsAlive=False '一直等待到該線程開始 End While '線程已經(jīng)開始,現(xiàn)在等待它結(jié)束 'While anotherthread.IsAlive=True '等待一直等待到線程結(jié)束 End While '作一些線程結(jié)束以后的事情
一個(gè)更好的處理線程的VB.NET并發(fā)性辦法就是使用事件,每一個(gè)線程都能夠運(yùn)行一個(gè)事件把它自己的狀態(tài)以一個(gè)標(biāo)志的形式給主程序一個(gè)值,或者是給其他一個(gè)線程一個(gè)具有標(biāo)志自身狀態(tài)后個(gè)值,這樣當(dāng)多個(gè)線程在運(yùn)行一個(gè)過程的多個(gè)拷貝的時(shí)候,這些線程都具有自己特有的事件來標(biāo)志各自的狀態(tài),則在線程之處的程序的其他的部分,就可以通過運(yùn)行這些事件,得到線程的信息,并且進(jìn)行下一步的信息的處理。例如:
Public Event Status(Byval
ThreaStatus As Integer,
Byval ThreadID As Integer)
VB.NET 提供了SyncLock表述來使得在一個(gè)expression中一些statements可以具有VB.NET并發(fā)性,這保證了多個(gè)線程在運(yùn)行時(shí)不在同一時(shí)間里,運(yùn)行相同的statements,當(dāng)進(jìn)入了SyncLock模塊,共享的方法System.Monitor.Enter將在特定的expression下運(yùn)行,一直到這個(gè)特定的線程對(duì)expression返回的對(duì)象有exclusive Lock以后,模塊中的代碼才會(huì)停止運(yùn)行。
注意:expression的類型必須是可引用的那種類型。
上述內(nèi)容就是VB.NET中怎么并發(fā)性判斷線程狀態(tài),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。