使用執行緒和執行緒處理

使用 .NET,您可以撰寫同時執行多項作業的應用程式。 可能妨礙其他作業的作業可以在另外的執行緒上執行,這類處理序稱為「多執行緒」或「無限制執行緒」

使用多執行緒的應用程式回應使用者輸入會更快,因為當處理器密集工作在另外的執行緒上執行時,使用者介面會保持使用中。 當您建立可擴充的應用程式時,多執行緒也很有幫助,因為您可以隨著工作負載增加而新增執行緒。

注意

如果您需要對應用程式執行緒行為有更大的掌控力,您可以自行管理執行緒。 然而多執行緒的程式設計已透過 System.Threading.Tasks.ParallelSystem.Threading.Tasks.Task 類型、平行 LINQ (PLINQ)System.Collections.Concurrent 命名空間中的新並行集合類別,以及以工作 (而非執行緒) 概念為基礎的程式設計模型,而做出簡化。 如需詳細資訊,請參閱平行程式設計工作平行程式庫 (TPL)

如何:建立及啟動新的執行緒

您可以藉由建立 System.Threading.Thread 類別的新執行個體來建立新的執行緒。 您會提供您要在新執行緒上執行的方法名稱給建構函式。 若要啟動已建立的執行緒,請呼叫 Thread.Start 方法。 如需詳細資訊和範例,請參閱建立執行緒並在啟動時傳遞資料一文和 Thread API 參考。

如何:停止執行緒

若要終止執行緒的執行,請使用 System.Threading.CancellationToken。 此項目提供統一的方式來合作停止執行緒。 如需詳細資訊,請參閱受控執行緒中的取消作業

有時候無法以合作方式停止執行緒,因為它執行的不是專為合作式取消而設計的協力廠商程式碼。 在此情況下,您可能會想要強制終止其執行。 若要強制終止執行緒的執行,您可以在 .NET Framework 中使用 Thread.Abort 方法。 該方法會在叫用該方法的執行緒上引發 ThreadAbortException。 如需詳細資訊,請參閱終結執行緒。 .NET Core 不支援 Thread.Abort 方法。 如果您需要在 .NET Core 中強制終止執行第三方程式碼,請在個別程序中執行,並使用 Process.Kill 方法。

在 .NET Framework 4 之前 System.Threading.CancellationToken 無法使用。 若要停止舊版 .NET Framework 中的執行緒,請使用執行緒同步處理技術手動實作合作式取消。 例如,您可以建立變動性布林值欄位 shouldStop,並使用欄位來要求執行緒執行的程式碼停止。 如需詳細資訊,請參閱 C# 參考和 System.Threading.Volatile 中的揮發

使用 Thread.Join 方法讓呼叫的執行緒等待要停止的執行緒終止。

如何:暫停或插斷執行緒

您可以使用 Thread.Sleep 方法在指定的時間內暫停目前的執行緒。 您可以透過呼叫 Thread.Interrupt 方法來插斷封鎖的執行緒。 如需詳細資訊,請參閱暫停及插斷執行緒

執行緒屬性

下表列出 Thread屬性的一部分:

屬性 說明
IsAlive 若執行緒已啟動且尚未正常終止或中止,則傳回 true
IsBackground 取得或設定布林值,指出執行緒是否為背景執行緒。 背景執行緒就像前景執行緒。 不過,背景執行緒不會防止程序停止。 一旦屬於處理程序的所有前景執行緒停止,通用語言執行平台會呼叫背景執行緒上仍在執行的 Abort 方法來結束處理程序。 如需詳細資訊,請參閱前景與背景執行緒
Name 取得或設定執行緒名稱。 最常用於在偵錯時探索個別執行緒。
Priority 取得或設定作業系統使用的 ThreadPriority 值,以設定執行緒排程的優先權。 如需詳細資訊,請參閱排程執行緒ThreadPriority 參考。
ThreadState 取得包含執行緒目前狀態的 ThreadState 值。

另請參閱