【问题标题】:How Async/await works in .net 4.5 [duplicate]Async/await 如何在 .net 4.5 中工作 [重复]
【发布时间】:2020-05-26 01:49:12
【问题描述】:

Async await 如何在 .net 4.5 及更高版本中工作?它与 BeginInvoke 和 EndInvoke 有何不同

【问题讨论】:

标签: c# parallel-processing


【解决方案1】:

Async 和 await 适用于任务库。如果您编写一个方法并希望使其异步,您只需将其标记为异步并在方法内的任何任务上调用 await 即可。仅 await 关键字使您的方法异步,并且此代码异步运行。例如:

//This Method isn't async because there is no await
private async Task DoSomething()
{
   //Some work
}

//This method is async because it awaits sth.
private async Task DoSomething()
{
   await SomeOtherStuff();
}

请注意,异步方法返回 Task 或 Task 封装了您的返回类型。此任务允许其他方法等待您的方法。通过这种方式,您构建了一个以您的 GUI 结束的链。所以你的 GUI 没有阻塞和响应。

我在 google 1 秒后发现了这张图表,它很好地描述了这种行为:

这与 BeginInvoke 和 EndInvoke 关系不大,因为 Invoke 调用只是为了在不同线程中使用 Gui 对象。如果可能的话,你应该避免 BeginInvoke 和 EndInvoke 并且只在你的主线程上使用 GUI。

【讨论】:

  • 嗨,请放一些序列图,因为我知道上面的图是从某个网站复制的
猜你喜欢
  • 1970-01-01
  • 2012-10-16
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 2021-01-25
  • 2018-11-26
  • 2013-02-22
  • 2020-03-09
相关资源
最近更新 更多