等待异步TaskEx

什么是TaskEx ? 在http://www.i-programmer.info/programming/c/1514-async-await-and-the-ui-problem.html?start=1或等待TaskEx.Delay或Await async澄清 。 我用

 Task DoWork() { return Task.Run(() => { for (int i = 0; i < 30; i++) { Thread.Sleep(1000 * 60 * 30); } }); } 

示例使用此

 Task DoWork() { return TaskEx.Run(() => { for (int i = 0; i < 10; i++) { Thread.Sleep(500); } } }); 

我称之为await DoWork(); 如果你只使用Task ,则await返回任何内容并且没有响应。 如果我使用TaskEx它说它在上下文中不存在。 TaskEx应该是一个类还是具有某种function的东西? 拳头一个工作这是我的错误。

TaskEx只是一个额外的类,最初在.NET 4.5发布之前附带了C#5的async / await扩展的CTP ……现在是Async Targeting Pack (又名Microsoft.Bcl.Async NuGet包 )的一部分。如果您想使用async / await但是目标是.NET 4.0(它没有一些所需的代码)。

如果您使用的是.NET 4.5或更高版本,请使用Task.Run ,它执行相同的操作。 (您将不会使用目标包,因此您将不会使用TaskEx 。)异步目标包无法向现有Task类添加静态方法,因此TaskEx不需要TaskEx

“TaskEx是一个仅存在于CTP中的类,因为无法在Framework中的现有Task类中添加额外的方法(因为CTP是使用单独的程序集实现的)。

它不会存在于框架的最终RTM版本中。 TaskEx上定义的方法将迁移到Task。“

资料来源: https : //social.msdn.microsoft.com/Forums/en-US/74c5ba79-76cc-4f73-a3fa-35616525ab80/what-is-the-difference-between-task-and-taskex-?forum=async

CTP是.NET编译器平台的社区预览版。