天天看點

[VB.NET]多線程——建立新線程

建立線程最直接的方法是建立新的線程類執行個體,并使用 AddressOf 語句為要運作的過程傳遞委托。例如,以下代碼将名為 SomeTask 的子過程作為單獨的線程運作。

Dim Thread1 As New System.Threading.Thread(AddressOf SomeTask)

Thread1.Start

' 此處的代碼立即運作。

以上所述就是建立和啟動線程的方法。線上程 Start 方法調用之後的任何代碼将立即運作,而無需等待前一個線程運作結束。

下表列出了用于控制各個線程的一些方法。

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

方法 操作

Start  使線程開始運作。

Sleep  使線程暫停一段指定的時間。

Suspend  使線程在到達安全點後暫停。

Abort  使線程在到達安全點後停止。

Resume  重新啟動挂起的線程。

Join  使目前線程等待其他線程運作結束。如果使用逾時值,且線程在配置設定的時間内結束,此方法将傳回 True。 

多數方法都無需再加以說明,但“安全點”可能是個新的概念。安全點是指代碼中的某些位置,在這些位置公共語言運作時可以安全地執行自動垃圾回收,即釋放未使用的變量并回收記憶體。調用線程的 Abort 或 Suspend 方法時,公共語言運作時将分析代碼并确定線程停止運作的适當位置。

線程還包含許多有用的屬性,如下表所示:

屬性 值

IsAlive  如果線程處于活動狀态,則包含值 True。 

IsBackground  擷取或設定布爾值,訓示線程是否是背景線程或是否應該是背景線程。背景線程與前台線程類似,但背景線程并不阻止程序的終止。當程序的所有前台線程都終止後,公共語言運作時将對仍處于活動狀态的背景線程調用 Abort 方法,以結束該程序。 

Name  擷取或設定線程的名稱。常用于在調試時查找各個線程。

Priority  擷取或設定作業系統用來确定線程優先級安排的值。

ApartmentState  擷取或設定用于特定線程的線程模型。當線程調用非托管的代碼時,線程模型将非常重要。

ThreadState  包含說明線程狀态的值。

繼續閱讀