溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

VB.NET中怎么并發(fā)性判斷線程狀態(tài)

發(fā)布時間:2021-08-02 13:52:13 來源:億速云 閱讀:122 作者:Leah 欄目:編程語言

本篇文章為大家展示了VB.NET中怎么并發(fā)性判斷線程狀態(tài),內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

當(dāng)用戶在寫出多線程程序的時候,可能***有挑戰(zhàn)性的就是獨立的線程和程序的其他的部分有并發(fā)性。例如,程序中的一個獨立的線程正在處理一系列的名稱,而程序的另一個部分必須等待這個線程完成以后才能進行,通常處理VB.NET并發(fā)性的線程的辦法就是判斷線程的狀態(tài)或者通過一個事件去標(biāo)志和得到一個特征值。

最簡單的,也是效率***的方法就是判斷一個線程的IsAlive屬性的值,當(dāng)一個線程在開始(Start)以前它的屬性IsAlive的值是"False",而在它運行的過程中,它的屬性IsAlive的值是"True"。這種方法并沒有通過一個事件去標(biāo)志和得到一個特征值可靠,而且如果這樣做的慶,也失去了自由線程的很多優(yōu)點和便利之處。例如:

while anotherthread.IsAlive=False '一直等待到該線程開始  End While  '線程已經(jīng)開始,現(xiàn)在等待它結(jié)束  'While anotherthread.IsAlive=True '等待一直等待到線程結(jié)束  End While  '作一些線程結(jié)束以后的事情

一個更好的處理線程的VB.NET并發(fā)性辦法就是使用事件,每一個線程都能夠運行一個事件把它自己的狀態(tài)以一個標(biāo)志的形式給主程序一個值,或者是給其他一個線程一個具有標(biāo)志自身狀態(tài)后個值,這樣當(dāng)多個線程在運行一個過程的多個拷貝的時候,這些線程都具有自己特有的事件來標(biāo)志各自的狀態(tài),則在線程之處的程序的其他的部分,就可以通過運行這些事件,得到線程的信息,并且進行下一步的信息的處理。例如:

  1. Public Event Status(Byval 
    ThreaStatus As Integer,
    Byval ThreadID As Integer) 

VB.NET 提供了SyncLock表述來使得在一個expression中一些statements可以具有VB.NET并發(fā)性,這保證了多個線程在運行時不在同一時間里,運行相同的statements,當(dāng)進入了SyncLock模塊,共享的方法System.Monitor.Enter將在特定的expression下運行,一直到這個特定的線程對expression返回的對象有exclusive Lock以后,模塊中的代碼才會停止運行。

注意:expression的類型必須是可引用的那種類型。

上述內(nèi)容就是VB.NET中怎么并發(fā)性判斷線程狀態(tài),你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI