【问题标题】:await Task.Delay doesn't seem to workawait Task.Delay 似乎不起作用
【发布时间】:2014-03-15 13:09:16
【问题描述】:

我想我遗漏了一些东西,但我似乎无法等待在 .net 4.5 中工作

有人知道这里的正确语法吗?我所看到的所有地方似乎都在使用我所拥有的。 (见Proper use of Task.Delay to delay key presses)

【问题讨论】:

  • 您能发布代码的相关部分吗?你真的阅读了错误信息吗?
  • 尽管 svick 的评论可能被认为有点苛刻,但他确实有一个很好的观点 - 编译器团队在这里输入了一个很好的错误消息,准确地告诉了如何修复问题。 :)

标签: c# .net-4.5 async-await


【解决方案1】:

您似乎正在尝试从 lambda 调用异步方法。您可能一开始就错过了async。例如“

SomeMethod(async () =>
    {
        //...
        await Task.Delay(1000, cancellationToken);
    });

【讨论】:

  • 如果可能,您应该避免使用void-returning async 方法(或 lamdas)。它们使错误处理更加困难。
  • 只是为了让其他人明白这一点,您可以将本地 var 的类型从 Action 更改为 Func 以解决 svick 的问题。这不是针对你们两个的评论,只是试图帮助其他可能无法“了解”他们如何更改代码的人,以便他们可以从中获得任务。 :)
  • 我假设他正在调用一个接受委托的方法,并且只需要 async 以便他可以在 Task.Delay 上调用 await。我已经更新了答案以反映这一点。
【解决方案2】:
猜你喜欢
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
  • 2016-11-29
  • 2016-02-01
  • 2020-09-23
  • 2010-12-05
  • 2011-06-14
相关资源
最近更新 更多