HOW TO: 使用 Visual C# .NET 建立執行緒

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

在此頁中

結論


在 Visual C# .NET 中,您可以撰寫多執行緒的應用程式。 本文說明一個簡單的 Visual C# .NET 應用程式如何建立並管理執行緒。

需求

下面的清單簡介建議的硬體、軟體、網路基礎架構和您需要的 Service Pack:
  • Microsoft Windows 2000 或 Microsoft Windows XP
  • Microsoft Visual C# .NET
本文假設您對下列主題是熟悉的:
  • Visual C# .NET 程式設計
  • Visual Studio .NET 整合式開發環境 (IDE,Integrated Development Environment)

建立有執行緒的 Visual C# .NET 應用程式

  1. 啟動 Microsoft Visual Studio .NET。
  2. 建立一個名稱為 ThreadWinApp 的新 Visual C# .NET Windows 應用程式專案。
  3. 在表單上新增 Button 控制項。 依照預設,按鈕名稱為 Button1
  4. 在表單上新增一個 ProgressBar 元件。 依照預設,進度列的名稱為 ProgressBar1
  5. 用滑鼠右鍵按一下表單,再按一下 [檢視程式碼]
  6. 將下列陳述式加到檔案開頭:
    using System.Threading;
  7. 將下列 Click 事件處理常式新增至 [Button1]
    private void button1_Click(object sender, System.EventArgs e)
    {
    	MessageBox.Show("This is the main thread");
    }
  8. 將下面變數新增至 Form1 類別中:
    private Thread trd;
    
  9. 將下面方法新增至 Form1 類別中:
    private void ThreadTask()
    {
    	int stp;
    	int newval;
    	Random rnd=new Random();
    
    	while(true)
    	{
    		stp=this.progressBar1.Step*rnd.Next(-1,2);
    		newval = this.progressBar1.Value + stp;
    
    		if (newval > this.progressBar1.Maximum)
    			newval = this.progressBar1.Maximum;
    		else if (newval < this.progressBar1.Minimum)
    			newval = this.progressBar1.Minimum;
    				this.progressBar1.Value = newval;
    
    		Thread.Sleep(100);
    	}
    }
    注意 這是執行緒的基礎程式碼。 此程式碼是無限迴圈,會隨機加減 [ProgressBar1] 中的值,然後會等待 100 毫秒後再繼續。
  10. 將下列 Load 事件處理常式新增至 Form1。 此程式碼會建立新的執行緒,使其為幕後執行緒,然後啟動該執行緒。
    private void Form1_Load(object sender, System.EventArgs e)
    {
    	Thread trd = new Thread(new ThreadStart(this.ThreadTask));
    	trd.IsBackground = true;
    	trd.Start();
    }

確認可運作

  1. 建立並執行應用程式。 請注意,[ProgressBar1] 中的值會隨機改變。 這是一個運作中的新執行緒。
  2. 若要顯示主執行緒獨立於改變 [ProgressBar1] 值的執行緒,則按一下表單上的按鈕。 您會接收到含有下列錯誤訊息的對話方塊:
    This is the main thread
等待輸入。 請注意,[ProgressBar1] 中的值仍會繼續改變。

疑難排解

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

?考

如需詳細資訊,請造訪下列 Microsoft 網站或 .NET Framework SDK 文件:

Thread Class
http://msdn2.microsoft.com/en-us/library/system.threading.thread(vs.71).aspx

屬性

文章編號: 815804 - 上次校閱: 2007年5月24日 - 版次: 1.5
這篇文章中的資訊適用於:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 標準版
  • Microsoft ADO.NET 1.0
  • Microsoft Common Language Runtime (included with the .NET Framework) 1.0
關鍵字:?
kbnamespace kbthreadsync kbthread kbhowtomaster KB815804
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