如何在 Visual Basic.NET 或 Visual Basic 2005 中建立的執行緒

文章翻譯 文章翻譯
文章編號: 315577 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將告訴您,如何在 Microsoft Visual Basic.NET 或 Microsoft Visual Basic 2005 Windows 應用程式中建立的執行緒。System.Threading 命名空間提供類別,您必須要有使用的執行緒。

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構及您需要的服務套件:
  • Microsoft Windows 2000 或 Microsoft Windows XP
  • Microsoft Visual Basic.NET 或 Microsoft Visual Basic 2005
本文假設您已熟悉下列主題:
  • Visual Basic.NET 程式設計或 Visual Basic 2005 程式設計
  • Visual Studio.NET 或 Visual Studio 2005 整合式的開發環境 (IDE)
  • 委派和執行緒的一般熟悉
  • 一般熟悉 Visual Basic.NET 或 Visual Basic 2005

執行緒與建立 Visual Basic.NET 或 Visual Basic 2005 應用程式

  1. 啟動 Microsoft Visual Studio.NET 或 Microsoft Visual Studio 2005。
  2. 建立新的 Visual Basic Windows 應用程式專案,名為 ThreadWinApp。
  3. 按鈕 控制項加入至表單。按鈕是預設命名 Button1
  4. ProgressBar 元件加入至表單。進度列會依預設命名 ProgressBar1
  5. 在表單上按一下滑鼠右鍵,然後按一下 [檢視程式碼
  6. 下列陳述式新增至檔案開頭:
    Imports System.Threading
    					
  7. 加入下列 Click 事件處理常式為 Button1
    Private Sub Button1_Click( _
        ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles Button1.Click
    
        MessageBox.Show("This is the main thread")
    End Sub
    					
  8. 將下列變數加入至 Form1 類別:
    Private trd As Thread
    					
  9. 將下列方法加入至 Form1 類別:
    Private Sub ThreadTask()
        Dim stp As Integer
        Dim newval As Integer
        Dim rnd As New Random()
    
        Do
            stp = ProgressBar1.Step * rnd.Next(-1, 2)
            newval = ProgressBar1.Value + stp
            If newval > ProgressBar1.Maximum Then
                newval = ProgressBar1.Maximum
            ElseIf newval < ProgressBar1.Minimum Then
                newval = ProgressBar1.Minimum
            End If
    
            ProgressBar1.Value = newval
    
            Thread.Sleep(100)
        Loop
    End Sub
    						
    注意: 這是 underlies 執行緒程式碼。這個程式碼是一個無限迴圈該隨機增量或減量中 ProgressBar1 值並再等待 100 毫秒為單位之前它還是會繼續。
  10. 將下列的 Load 事件處理常式加入 Form1。這個程式碼會建立新的執行緒、 使執行緒背景執行緒,然後啟動執行緒
    Private Sub Form1_Load( _
        ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles MyBase.Load
    
        trd = New Thread(AddressOf ThreadTask)
        trd.IsBackground = True
        trd.Start()
    End Sub
    					

請確認它可以運作

  1. 建置並執行應用程式。請注意進度列中的值隨機改變。這是新的執行緒在作業中。
  2. 若要示範主執行緒是無關的執行緒,會變更 ProgressBar 值,按一下表單上的按鈕。訊息方塊會顯示下列訊息:
    This is the main thread
    							
    等候輸入。請注意,若要變更的進度列中的值會繼續。

疑難排解

確定更複雜的應用程式中存取共用的變數時,同步處理多個執行緒。如需詳細資訊請參考 SyncLock 陳述式和 Visual Basic 線上說明的文件中的相關的主題。

屬性

文章編號: 315577 - 上次校閱: 2006年12月6日 - 版次: 4.3
這篇文章中的資訊適用於:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
關鍵字:?
kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315577 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:315577
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com