什么是TaskEx
?在http://www.i-programmer.info/programming/c/1514-async-await-and-the-ui-problem.html?start=1或await TaskEx.Delay或Await async clarification中。我用
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
应该是类还是具有某种功能的东西?拳头一做是我的错。
TaskEx
只是一个额外的类,它最初在.NET 4.5发行之前随C#5的async / await扩展的CTP一起提供...现在是Async Targeting Pack(又名Microsoft.Bcl.Async
NuGet package)的一部分您想使用async / await但目标是.NET 4.0(它没有所需的某些代码)的情况。
如果使用的是.NET 4.5或更高版本,则只需使用Microsoft.Bcl.Async
,即可完成相同的操作。 (您将不会使用定位包,因此不会使用Task.Run
。)异步定位包无法将静态方法添加到现有的TaskEx
类中,因此需要在Task
类中存在全部
“ TaskEx是仅存在于CTP中的类,因为无法向框架中的现有Task类添加额外的方法(因为CTP是使用单独的程序集实现的。)
它在框架的最终RTM版本中将不存在。 TaskEx上定义的方法将迁移到Task。“
来源:TaskEx
CTP是.NET编译器平台的社区预览版。