首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有新关键字'await‘的异步调用

带有新关键字'await‘的异步调用
EN

Stack Overflow用户
提问于 2010-12-21 00:13:21
回答 3查看 1.1K关注 0票数 3

我今天使用了异步方法,异步调用方法并使用调用者的回调方法。

最近,我可以在this post上看到使用新的await关键字来实现这一点的新方法。除了节省几行代码之外,这种新模型的主要优势是什么?

当你进行两个不同的异步调用,但希望控件在两个调用完成后只返回到调用者的回调中的一个时,它是否提供了内置的解决方案?

CTP (社区技术预览)是什么意思?这个新关键字在下一版本的C#和VB.NET中可用吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-21 01:38:30

摘自Eric Lippert的博客文章Asynchrony in C# 5, Part One

C# 5.0的设计者意识到编写异步代码在很多方面都是痛苦的。异步代码很难推理,正如我们已经看到的,转换为延续是复杂的,并导致代码充满了模糊代码含义的机制。

正如这篇文章所解释的,像迭代器块、匿名方法、查询理解和动态类型,其目的是让事情变得既难又容易。

至于社区技术预览位。通常,这意味着“等待”将出现在下一个版本的C#中,但不能保证它的某些方面不会改变。因此,如果你写了一些东西(代码或博客文章),并且它的中断,不要责怪他们。

票数 4
EN

Stack Overflow用户

发布于 2010-12-21 02:20:14

我会说“节省几行代码”是轻描淡写的。await关键字允许编译器生成所有必要的连接,从而允许您编写一个看起来非常像常规同步方法的异步方法。

当前使用回调的范例有许多局限性,例如无法使用某些语言构造、复杂的错误处理等。所有这些复杂性都被编译器生成的代码有效地隐藏了。

Async CTP附带了几个Word文档,这些文档的细节要详细得多。如果您还没有看过它们,我建议您这样做。“.NET.docx中的异步”文档中有一个非常详细的示例,它展示了编译器生成的代码的扩展。

票数 3
EN

Stack Overflow用户

发布于 2010-12-21 01:42:47

如果你想在异步操作完成后开始一个新的任务,你不需要"await“关键字。您所需要的就是Task.ContinueWhenAll方法。

关于CTP -这意味着这是在"alpha“阶段,可能包含错误,还没有完成(可能会在未来发生变化。例如,"await“关键字将更改为其他关键字,或者将具有不同的语法规则)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4491467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档