.NET Compact Framework 中的线程处理

更新:2007 年 11 月

.NET Compact Framework 支持核心线程处理功能,但不支持 .NET Framework 全功能版中的以下功能:

  • 在当前线程上访问压缩堆栈。

  • Win32 OVERLAPPED 结构的托管表示形式。

  • 管理执行上下文的类。

  • 使用信号量。

  • 线程状态属性。

  • 除获取句柄以外的大多数等待句柄操作。

.NET Compact Framework 支持将 ThreadStart 委托与 Thread.Start 方法一起使用,并支持将 TimerCallback 委托与 Timer 一起使用。

通过使用下列线程处理方法,可以指定超时参数:

线程池中的更改

在 .NET Compact Framework 1.0 版中,线程池中的默认最大线程数为 256 个线程,堆栈大小 64 KB。在 .NET Compact Framework 2.0 版及更高版本中,此限制减少为最多 25 个线程,堆栈大小 128 KB,这更接近于 .NET Framework 全功能版的功能。

如果线程池中没有线程可用,HTTP 请求将失败并引发异常。下表列出了这种情况下的主要异常。

异常

条件

OutOfMemoryException

无法对用户的回调排队。

WebException

线程池中没有足够的线程完成该操作。

可以通过减少并发 Web 请求的数量或增加线程池中允许的最大线程数来避免线程不足。.NET Compact Framework 2.0 支持 SetMaxThreads 方法。如下表所述指定该方法的参数。

参数

说明

workerThreads

线程池中的辅助线程的最大数量。可以是任意值。

completionPortThreads

线程池中的异步线程的最大数量。.NET Compact Framework 当前忽略此值,但该值必须设置为介于 1 和 1,000 之间。考虑到将来的兼容性,建议使用 500,因为这是 .NET Framework 全功能版的默认值。

对于运行 .NET Compact Framework 1.0 的设备,通过更改注册表设置可以减少线程池中允许的最大线程数。请将 CFROOT\ThreadPool 项中的 MaxThreads 设置为所需的值。请注意,.NET Compact Framework 以后的版本不使用此注册表项。

请参见

参考

System.Threading

其他资源

.NET Compact Framework 中的应用程序开发