.NET 將多線程功能封裝在 System.Threading 命名空間。本文介紹 Thread 類別核心操作:啟動、結束、暫停、恢復、優先權,並提供完整範例展示主執行緒與工作執行緒交替執行的行為。
| 操作 | 方法/屬性 | 說明 |
|---|---|---|
| 啟動 | new Thread(ThreadStart).Start() | 建立並啟動執行緒 |
| 結束 | Abort() (已過時) | 強制終止,建議用取消權杖模式 |
| 暫停 | Thread.Sleep(ms) | 讓目前執行緒睡眠指定毫秒 |
| 掛起 | Suspend() (已過時) | 不建議使用,易造成死結 |
| 恢復 | Resume() (已過時) | 配合 Suspend,同樣不建議 |
| 優先權 | Priority 屬性 | Highest/AboveNormal/Normal/BelowNormal/Lowest,OS 不保證遵守 |
| 等待結束 | Join() | 阻塞呼叫執行緒直到目標執行緒結束 |
| 檢查存活 | IsAlive | 執行緒是否仍在執行 |
using System;
using System.Threading;
public class ThreadExample
{
// 工作執行緒進入點
public static void ThreadProc()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("ThreadProc: {0}", i);
Thread.Sleep(0); // 讓出時間片
}
}
public static void Main()
{
Console.WriteLine("Main thread: Start a second thread.");
Thread t = new Thread(new ThreadStart(ThreadProc));
t.Start();
// Thread.Sleep(0); // 取消註解可觀察調度差異
for (int i = 0; i < 4; i++)
{
Console.WriteLine("Main thread: Do some work.");
Thread.Sleep(0);
}
Console.WriteLine("Main thread: Call Join(), to wait until ThreadProc ends.");
t.Join(); // 等待工作執行緒結束
Console.WriteLine("Main thread: ThreadProc.Join has returned. Press Enter to end.");
Console.ReadLine();
}
}
Main thread: Start a second thread.
Main thread: Do some work.
ThreadProc: 0
Main thread: Do some work.
ThreadProc: 1
Main thread: Do some work.
ThreadProc: 2
Main thread: Do some work.
ThreadProc: 3
Main thread: Call Join(), to wait until ThreadProc ends.
ThreadProc: 4
ThreadProc: 5
ThreadProc: 6
ThreadProc: 7
ThreadProc: 8
ThreadProc: 9
Main thread: ThreadProc.Join has returned. Press Enter to end.
Task/Task<T> (TPL)、async/await、Parallel.ForEach、ThreadPool。CancellationTokenSource/CancellationToken 協同取代 Abort/Suspend/Resume。lock、Monitor、Mutex、SemaphoreSlim、ReaderWriterLockSlim、Interlocked、Concurrent 集合。xxxAsync 方法,釋放執行緒等待 I/O 完成。Control.Invoke/BeginInvoke,WPF 用 Dispatcher.Invoke,ASP.NET Core 無 UI 執行緒問題。理解 Thread 基礎行為是進階併發程式設計的基石。現代 .NET 開發應以 Task 為核心抽象,配合 async/await 撰寫可讀、可維護、高擴充性的非同步程式碼。本文範例展示的 Join、Sleep(0) 讓出時間片、執行緒交替輸出,有助於建立正確的執行緒調度心智模型。