使用 Visual C# 建立線程
您可以在 Microsoft Visual C# .NET 或 Visual C# 中撰寫多線程應用程式。 本文說明簡單的 Visual C# 應用程式如何建立和管理線程。
原始產品版本: Visual C#
原始 KB 編號: 815804
需求
下列清單概述您需要的建議硬體、軟體、網路基礎結構和 Service Pack:
- Windows 或 Windows Server
- Visual C# .NET 或 Visual C#
本文假設您已熟悉下列主題:
- Visual C# 程序設計
- Visual Studio .NET 集成開發環境 (IDE) 或 Visual Studio IDE
本文參考 .NET Framework 類別庫命名空間 System.Threading
。
建立具有線程的 Visual C# 應用程式
啟動 Visual Studio .NET、Visual Studio 或 Visual C# Express Edition。
建立名為 ThreadWinApp 的新 Visual C# Windows 應用程式專案。
將按鈕控制項新增至表單。 根據預設,按鈕會命名為 Button1。
將 ProgressBar 元件新增至表單。 根據預設,進度列會命名為 ProgressBar1。
以滑鼠右鍵按兩下窗體,然後按兩下 [ 檢視程式代碼]。
將下列語句新增至檔案的開頭:
using System.Threading;
新增 Button1 的下列
button1_Click
事件處理程式:private void button1_Click(object sender, System.EventArgs e) { MessageBox.Show("This is the main thread"); }
將下列變數新增至
Form1
類別:private Thread trd;
將下列方法新增至
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 毫秒。
為 Form1 新增下列
Form1_Load
事件處理程式。 此程式代碼會建立新的線程、讓線程成為背景線程,然後啟動線程。private void Form1_Load(object sender, System.EventArgs e) { Thread trd = new Thread(new ThreadStart(this.ThreadTask)); trd.IsBackground = true; trd.Start(); }
確認其運作正常
建置並執行應用程式。 請注意,ProgressBar1 中的值會隨機變更。 這是作業中的新線程。
若要示範主線程與變更 ProgressBar1 值的線程無關,請按兩下表單上的按鈕。 您會收到具有下列錯誤訊息的對話盒:
這是主線程
等候輸入。 請注意,ProgressBar1 中要變更的值。
疑難排解
在更複雜的應用程式中,請務必在存取共用變數時同步處理多個線程。 如需詳細資訊,請參閱Visual C# .NET 線上說明檔中的lock語句和相關主題。
參考資料
如需詳細資訊,請參閱 Thread 類別。