所有執行緒功能位於 System.Threading 命名空間。核心類別 Thread 代表一條執行緒。
using System.Threading;
Thread thread = new Thread(new ThreadStart(HelloWorld));
thread.Start(); // 非同步啟動,立即返回
void HelloWorld() {
Console.WriteLine("Hello from thread!");
}
注意:Java 的 run() 對應 C# 的建構子傳入 ThreadStart 委派,非繼承覆寫。
| 操作 | 方法/屬性 | 說明 |
|---|---|---|
| 永久終止 | Abort() | 拋出 ThreadAbortException,需先檢查 IsAlive |
| 暫停指定時間 | Sleep(milliseconds) | 靜態方法,讓出 CPU 時間片 |
| 掛起 | Suspend() | 已過時,易造成死結,建議用同步機制替代 |
| 恢復 | Resume() | 已過時,配合 Suspend 使用 |
| 優先權 | Priority 屬性 | Lowest/BelowNormal/Normal/AboveNormal/Highest |
if (thread.IsAlive) {
thread.Abort(); // 或 thread.Join() 等待自然結束
}
if (thread.ThreadState == ThreadState.Running)
thread.Suspend();
if (thread.ThreadState == ThreadState.Suspended)
thread.Resume();
ThreadState 為旗標列舉(可組合):
Running、Suspended、WaitSleepJoin、Stopped、Aborted、Unstarted 等(thread.ThreadState & ThreadState.Running) != 0 檢查特定狀態thread.IsBackground = true; // 背景執行緒:主程式結束時自動終止
// 預設為前景執行緒,會阻止應用程式結束
lock / Monitor:互斥鎖Mutex:跨處理序同步Semaphore:資源計數控制AutoResetEvent/ManualResetEvent:訊號通知Interlocked:原子操作ThreadPool / Task / async-await,避免手動管理 ThreadAbort、Suspend/Resume,改用取消權杖(CancellationToken)Concurrent 集合Name 利於偵錯