使用執行緒 (C# 程式設計手冊)

更新:2007 年 11 月

依據預設,C# 程式有一個執行緒。此執行緒會執行程式中的程式碼,以 Main 方法開始和結束。Main 所直接或間接執行的每個命令,都是由預設 (或主要) 執行緒執行,而此執行緒會在 Main 傳回時結束。然而,可以建立輔助執行緒,並用其和主要執行緒同時執行程式碼。這些執行緒通常稱為「背景工作執行緒」(Worker Thread)。

背景工作執行緒可用來執行耗費時間或時間緊急的工作,而不需中斷主要執行緒。例如,背景工作執行緒通常使用於伺服器應用程式以滿足收到的要求,不需等到先前的要求完成。背景工作執行緒也用於執行桌面應用程式中的「幕後」(background) 工作,因此驅動使用者介面項目的主執行緒能對使用者的動作維持回應能力。

多執行緒處理可以解決處理量和回應速度的問題,但同時也帶來資源共用問題,例如死結 (Deadlock) 和競爭情形。多執行緒最適合需要不同資源 (例如,檔案控制代碼和網路連接) 的工作。指派多執行緒給單一資源可能會造成同步處理的問題,而在等待其他執行緒時若需要經常封鎖執行緒,就失去了使用多執行緒的目的。

有一種常見的策略,是使用工作者執行緒執行耗費時間或時間緊急的工作,這些工作不需要其他執行緒所使用的許多資源。當然,您程式中的某些資源一定會由多執行緒存取。針對這些狀況,System.Threading 命名空間會提供同步處理執行緒的類別。這些類別包括 MutexMonitorInterlockedAutoResetEvent,以及 ManualResetEvent

您可以使用這些類別當中的某一些或全部同步處理多執行緒的活動,但 C# 語言有提供多執行緒處理的某些支援。例如,C# Lock 陳述式透過隱含使用 Monitor 以提供同步處理功能。

下列主題示範常見的多執行緒處理技巧:

相關章節

如需詳細資訊,請參閱:

請參閱

工作

監視同步處理技術範例

等候同步處理技術範例

執行緒處理範例

概念

C# 程式設計手冊

監視器

Interlocked 作業

AutoResetEvent

參考

Thread

Mutex

其他資源

Managed 執行緒

使用執行緒和執行緒處理

執行緒範例