等待异步任务Ex

本文关键字:Ex 任务 异步 等待 | 更新日期: 2023-09-27 18:32:04

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

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();如果只使用 Taskawait不返回任何内容,也没有响应。如果我使用TaskEx它说它在上下文中不存在。TaskEx应该是一个类还是具有某种功能的东西?拳头一 工作,这是我的错误。

等待异步任务Ex

TaskEx只是一个额外的类,最初在 .NET 4.5 发布之前随 C# 5 的 async/await 扩展的 CTP 一起提供......现在是异步目标包(也称为 Microsoft.Bcl.Async NuGet 包)的一部分,以防你想要使用 async/await 但面向 .NET 4.0(它没有所需的一些代码)。

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

"TaskEx 是一个只存在于 CTP 中的类,因为无法向框架中的现有 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 编译器平台的社区预览版。

这也可以通过System.Threading.Timer来实现。如 API 文档中所述:

如果period为零 (0) 或超时。无限且dueTime不是超时。无限,callback则调用一次 [...]

因此,可以创建单次计时器,例如:

Timer oneShotTimer = new Timer((object stateInfo) => {
  // your callback code here
}, null, yourOneShotTimePeriodHere, Timeout.Infinite);

API 中还有一个技巧可以从其回调方法中释放计时器:https://stackoverflow.com/a/26410217/3517056