异步等待如何在.net 4.5及以上版本中运行?它与BeginInvoke和EndInvoke
的区别答案 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秒后发现这个图表很好地描述了这种行为:
这与BeginInvoke和EndInvoke没什么关系,因为Invoke调用只是用于在不同的线程中使用Gui对象。如果可能,您应该避免使用BeginInvoke和EndInvoke,并仅在Mainthread上使用GUI。