使用 .NET,您可以撰寫同時執行多個作業的應用程式。 可能會阻塞其他作業的操作可以在不同的執行緒上執行,這個過程稱為 多執行緒 或 自由執行緒。
使用多線程的應用程式對使用者輸入更有回應,因為使用者介面會隨著處理器密集型工作在不同的線程上執行而保持作用中。 當您建立可調整的應用程式時,多線程也很有用,因為您可以在工作負載增加時新增線程。
備註
如果您需要更充分掌控應用程式線程的行為,您可以自行管理線程。 不過,使用 System.Threading.Tasks.Parallel 和 System.Threading.Tasks.Task 類別、Parallel 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# 參考中查看volatile並System.Threading.Volatile。
使用Thread.Join 方法讓呼叫執行緒等待被停止的執行緒終止。
如何:暫停或中斷線程
您可以使用 Thread.Sleep 方法來暫停目前線程的指定時間量。 您可以藉由呼叫 方法來中斷封鎖的 Thread.Interrupt 線程。 如需詳細資訊,請參閱 暫停和中斷線程。
線程屬性
下表列出一些 Thread 屬性:
房產 | 說明 |
---|---|
IsAlive | 如果線程已啟動且尚未正常終止或中止,則傳 true 回 。 |
IsBackground | 取得或設定布爾值,指出線程是否為背景線程。 背景線程就像前景線程。 不過,背景線程不會防止進程停止。 一旦屬於進程的所有前景線程都已停止,Common Language Runtime 會在仍在運作的背景線程上呼叫 Abort 方法,結束進程。 如需詳細資訊,請參閱 前景和背景線程。 |
Name | 取得或設定線程的名稱。 最常用來在偵錯時探索個別線程。 |
Priority | 取得或設定作業系統用來設定線程排程優先順序的ThreadPriority值。 如需詳細資訊,請參閱 排程線程 和 ThreadPriority 參考。 |
ThreadState | 取得值 ThreadState ,其中包含線程的目前狀態。 |