執行緒 (C# 和 Visual Basic)
執行緒可讓 Visual Basic 或 C# 程式執行並行處理,因此您可以同時執行多項作業。例如,您可以使用執行緒來監視使用者輸入、執行背景工作,以及處理同時輸入的資料流。
執行緒有下列屬性:
執行緒可讓您的程式執行並行處理。
.NET Framework System.Threading 命名空間可讓執行緒使用起來更為容易。
執行緒會共用應用程式的資源。如需詳細資訊,請參閱使用執行緒和執行緒處理。
根據預設,Visual Basic 或 C# 程式有一個執行緒。然而,可以建立輔助執行緒,並用其和主要執行緒同時執行程式碼。這些執行緒通常稱為「背景工作執行緒」(Worker Thread)。
背景工作執行緒可用來執行耗費時間或時間緊急的工作,而不需中斷主要執行緒。例如,背景工作執行緒通常使用於伺服器應用程式以滿足收到的要求,不需等到先前的要求完成。背景工作執行緒也用於執行桌面應用程式中的「幕後」(background) 工作,因此驅動使用者介面項目的主執行緒能對使用者的動作維持回應能力。
執行緒處理可以解決處理量和回應速度的問題,但同時也帶來資源共用問題,例如死結和競爭情形。多執行緒最適合需要不同資源 (例如,檔案控制代碼和網路連接) 的工作。指派多執行緒給單一資源可能會造成同步處理的問題,而在等待其他執行緒時若需要經常封鎖執行緒,就失去了使用多執行緒的目的。
有一種常見的策略,是使用工作者執行緒執行耗費時間或時間緊急的工作,這些工作不需要其他執行緒所使用的許多資源。當然,您程式中的某些資源一定會由多執行緒存取。針對這些狀況,System.Threading 命名空間會提供同步處理執行緒的類別。這些類別包括 Mutex、Monitor、Interlocked、AutoResetEvent 和 ManualResetEvent。
您可以使用這些類別當中的某一些或全部同步處理多執行緒的活動,但 Visual Basic 和 C# 語言提供執行緒處理的某些支援。例如,Visual Basic SyncLock 陳述式和 C# Lock 陳述式透過隱含使用 Monitor,提供同步處理功能。
注意事項 |
---|
在 .NET Framework 4 中,多執行緒程式設計已透過下列項目而大幅簡化:System.Threading.Tasks.Parallel 和 System.Threading.Tasks.Task 類別、平行 LINQ (PLINQ)、System.Collections.Concurrent 命名空間中的新並行集合類別,以及根據工作概念 (而非執行緒) 的新程式設計模型。如需詳細資訊,請參閱以 .NET Framework 進行平行程式設計。 |
相關主題
標題 |
描述 |
---|---|
說明如何建立和使用執行緒。 |
|
說明如何傳遞和傳回多執行緒應用程式 (Multithreaded Application) 的參數。 |
|
示範如何建立簡單的多執行緒應用程式。 |
|
說明如何控制執行緒的互動。 |
|
描述如何每隔固定的時間間隔在不同的執行緒上執行程序。 |
|
說明如何使用由系統管理的背景工作執行緒集區。 |
|
示範同步使用執行緒集區中的多執行緒。 |
|
說明在 .NET Framework 中如何實作執行緒。 |
精選書籍章節
C# 3.0 in a Nutshell, Third Edition: A Desktop Quick Reference 的 Threading
C# 3.0 in a Nutshell, Third Edition: A Desktop Quick Reference 的 Asynchronous Methods
C# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmers 的 Threading and Synchronization