建立線程最直接的方法是建立新的線程類執行個體,并使用 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 包含說明線程狀态的值。