c# - 在 .NET 4 中,BeginInvoke 和 Task 是否使用相同的线程池?

标签 c# .net .net-4.0 concurrency

.NET 4 引入了全新的线程池设计,可由任务并行库访问。但是,如果我有使用 Delegate.BeginInvoke 的旧代码,这些代码会由那个新线程池执行吗?或者旧的线程池是否仍在运行时的某个地方?

最佳答案

它们都使用相同的线程池。 ThreadPool.QueueUserWorkItem 也是如此。

但是,与 Task.Factory.StartNew 相比,Delegate.BeginInvoke 有额外的开销,并且没有利用 ThreadPool 中的许多功能,例如工作窃取或新的调试功能.如果时间允许,我建议重构它以使用新的任务功能。

关于c# - 在 .NET 4 中,BeginInvoke 和 Task 是否使用相同的线程池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5264836/

相关文章:

c# - 如何使用从父接口(interface)继承的相同方法实现多个接口(interface)

c# - 根据值切换类

c# - StructureMap:如何按类型而不是名称指定 Ctor 参数

.net - 有 .NET 3.0 或更高版本经验的开发者,您会推荐先看哪些功能?

c# - 将项目添加到 List<T>/防御性编程

c# - 在 DesignMode 中编辑集合的最简单方法?

wcf - 在 .NET 4 中使用 JSON.NET 和 RESTful WCF 服务

c# - 如何优化具有大文件 I/O(读取、写入)和计算的例程?

.net - Wf 4 接收事件 : Difference between Messages and Parameters

c# - 在 WinForm 应用程序中加载表单后禁用 datagridview 中的默认单元格选择