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