.NET 4.5中的任务与线程

时间:2013-03-01 20:55:05

标签: c# .net

.Net 4,有新的任务功能,我想知道我是否可以依赖它Async/Await .Net 4.5对我想要的所有方法异步执行或者在某些情况下我必须使用单独的Thread,特别是我已经读过Task.Run使用ThreadPool异步执行该方法。

结论:使用Async/AwaitTasks的组合可以让我免除使用Threads吗?

1 个答案:

答案 0 :(得分:5)

如果指定TaskCreationOptions.LongRunning选项(还有一个等效的延续),那么任务将不使用线程池线程,它将使用常规Thread。从技术上讲,这是一个实现细节,不在规范中,但依赖它并不是一个完全不合理的假设。

鉴于此,您应该可以使用Task直接使用Thread执行任何操作。

有人可能想要直接使用Thread的主要情况是创建自己的并行库,假设您选择不在TPL之上构建它。虽然它在业务应用程序的上下文中并不重要,但在创建自己的库时,您可能需要访问特定Thread对象的基础详细信息,或者您可能希望避免使用的开销(尽可能小) Tasks

当然,如果您还没有使用.NET 4.0,则无法使用Task