【发布时间】:2012-02-10 09:46:28
【问题描述】:
浏览第 9 频道的 msdn 视频时,我发现了以下未答复的评论,希望有人能解释一下吗?
我不明白 async 关键字的意义。为什么不让 方法返回 Task 时的 await 关键字,就像迭代器一样 可以在任何返回 IEnumerable 的方法上产生返回。
我确信有充分的理由,我只是想了解为什么上述建议是不可能的。
【问题讨论】:
-
我的蜘蛛侠感觉在发麻…… Jon Skeet 正在路上!在我们等待的同时,进一步阅读:blogs.msdn.com/b/ericlippert/archive/2010/10/29/…
-
需要两个不同位置的关键字来实现一个新功能似乎是一个糟糕的设计选择。很多人问这个问题的事实意味着(对我来说)做出了错误的选择。通读博客中的所有推理,我可以遵循逻辑,但妥协并不总是最好的计划。有时最好打破一些代码并继续前进。
-
我个人认为做出了最安全的选择。如果破坏代码和不破坏代码之间的所有只是一个简单的关键字,那么这并不是一项繁重的任务。人们可能会对此发表意见,但可以假设他们不会遇到向后兼容性问题。许多同意或不偏不倚的人都没有发声。
-
@Adelphus:那么,让我们使用科学。您可以创建自己的不使用 async 关键字的实现,我们将看到会引发多少问题。
-
建议用编译器选项和 [EnableAwait(true|false)] 属性替换它:visualstudio.uservoice.com/forums/121579-visual-studio/…
标签: c# .net asynchronous async-ctp