c# - .NET 4.5 中的任务与线程

标签 c# .net

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

结论:将 Async/AwaitTasks 结合使用是否可以让我摆脱对 Threads 的使用?

最佳答案

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

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

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

当然,如果您尚未使用 .NET 4.0,则无法选择使用 Task

关于c# - .NET 4.5 中的任务与线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15166734/

相关文章:

c# - 如何将文本放在 RadioButton 的顶部

c# - 如何在 Visual Studio 中更改大括号/圆括号的颜色

c# - 检测服务器连接到的网络的名称

c# - ASP.NET MVC 请求服务器变量

c# - 对于 Task.Factory.StartNew 和 Parallel.Invoke,线程可以在不同的处理器或内核上运行

.net - 对于具有自定义大小的枚举字段的结构,编码(marshal)失败

java - (.Net + SQL Server +Azure ) 与 (Java + Oracle +Google App Engine) 哪个更适合这个项目?

java - 从 DDD 后的应用程序批量导出时的最佳实践是什么

c# - 性能:从泛型派生的类型

c# - 检查枚举是否处于所需状态之一