Async / await如何在.net 4.5中运行

时间:2017-01-25 06:09:49

标签: c# parallel-processing

异步等待如何在.net 4.5及以上版本中运行?它与BeginInvoke和EndInvoke

的区别

1 个答案:

答案 0 :(得分: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不会阻止和响应。

我在谷歌1秒后发现这个图表很好地描述了这种行为:

enter image description here

这与BeginInvoke和EndInvoke没什么关系,因为Invoke调用只是用于在不同的线程中使用Gui对象。如果可能,您应该避免使用BeginInvoke和EndInvoke,并仅在Mainthread上使用GUI。