.NET Compact Framework 中的執行緒
更新:2007 年 11 月
.NET Compact Framework 支援核心執行緒功能,不過不支援完整 .NET Framework 中的下列功能:
存取目前執行緒上的壓縮堆疊。
Win32 OVERLAPPED 結構的 Managed 表示法。
管理執行內容的類別。
使用號誌 (Semaphore)。
執行緒狀態屬性 (Attribute)。
多數等待處理常式作業 (取得處理常式例外)。
.NET Compact Framework 支援以 Thread.Start 方法使用 ThreadStart 委派,以及支援使用 Timer 的 TimerCallback 委派。
您可以使用下列執行緒方法指定逾時參數:
Thread 的 Join(Int32) 方法。
執行緒集區的變更
在 .NET Compact Framework 1.0 版中,執行緒集區中預設的最大執行緒數目為 256,且堆疊大小為 64 KB。在 .NET Compact Framework 2.0 版 (含) 之後版本中,這個限制降為最多 25 個執行緒,且堆疊大小為 128 KB,如此更符合完整 .NET Framework 的功能。
如果執行緒集區中沒有執行緒可用,則 HTTP 要求會失敗並擲回例外狀況。下表說明這種情況中的主要例外狀況。
例外狀況 |
條件 |
---|---|
無法佇列使用者的回呼 (Callback)。 |
|
執行緒集區中沒有足夠的執行緒可以完成作業。 |
您可以藉由減少並行 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 不會使用這個登錄機碼。