.NET Compact Framework 中的執行緒

更新:2007 年 11 月

.NET Compact Framework 支援核心執行緒功能,不過不支援完整 .NET Framework 中的下列功能:

  • 存取目前執行緒上的壓縮堆疊。

  • Win32 OVERLAPPED 結構的 Managed 表示法。

  • 管理執行內容的類別。

  • 使用號誌 (Semaphore)。

  • 執行緒狀態屬性 (Attribute)。

  • 多數等待處理常式作業 (取得處理常式例外)。

.NET Compact Framework 支援以 Thread.Start 方法使用 ThreadStart 委派,以及支援使用 TimerTimerCallback 委派。

您可以使用下列執行緒方法指定逾時參數:

執行緒集區的變更

在 .NET Compact Framework 1.0 版中,執行緒集區中預設的最大執行緒數目為 256,且堆疊大小為 64 KB。在 .NET Compact Framework 2.0 版 (含) 之後版本中,這個限制降為最多 25 個執行緒,且堆疊大小為 128 KB,如此更符合完整 .NET Framework 的功能。

如果執行緒集區中沒有執行緒可用,則 HTTP 要求會失敗並擲回例外狀況。下表說明這種情況中的主要例外狀況。

例外狀況

條件

OutOfMemoryException

無法佇列使用者的回呼 (Callback)。

WebException

執行緒集區中沒有足夠的執行緒可以完成作業。

您可以藉由減少並行 Web 要求的數目或增加執行緒集區內允許執行緒的最大數目,避免發生用完執行緒的狀況。.NET Compact Framework 2.0 支援 SetMaxThreads 方法。請依照下表中所述指定其參數。

參數

說明

workerThreads

執行緒集區中背景工作執行緒的最大數目。這可以是任何的值。

completionPortThreads

執行緒集區中非同步執行緒的最大數目。.NET Compact Framework 目前會忽略這個值,不過必須設為介於 1 和 1,000 之間的值。為了未來的相容性,建議使用 500,因為這是完整 .NET Framework 的預設值。

對於執行 .NET Compact Framework 1.0 的裝置,可以藉由變更登錄設定減少執行緒集區內所允許執行緒的最大數目。將 CCFROOT\ThreadPool 機碼中的 MaxThreads 設為所要的值。請注意,新版 .NET Compact Framework 不會使用這個登錄機碼。

請參閱

參考

System.Threading

其他資源

.NET Compact Framework 中的應用程式開發