等待异步TaskEx

问题描述 投票:11回答:3

什么是TaskEx?在http://www.i-programmer.info/programming/c/1514-async-await-and-the-ui-problem.html?start=1await TaskEx.DelayAwait 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应该是类还是具有某种功能的东西?拳头一做是我的错。

c# .net visual-studio async-await
3个回答
26
投票

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类中存在全部


0
投票

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

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

来源:TaskEx

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


© www.soinside.com 2019 - 2024. All rights reserved.