【问题标题】:What is async and await and when would you use these in windows development?什么是异步和等待,什么时候在 Windows 开发中使用它们?
【发布时间】:2012-01-18 06:32:13
【问题描述】:

我一直在 Silverlight 中看到关键字 async 使用,但想知道是否有人对它是什么以及何时使用它及其好处进行了假解释。如果您能解释一下,将不胜感激。谢谢。

【问题讨论】:

  • 这与线程有关这是一个相当大的话题,但是如果您只想要一个基本实用的一句话答案,异步意味着两件事在时间上相互独立地发生。例如,您有一个查询数据库的按钮。如果您不竭尽全力使其异步,那么您的整个程序将停止并等待它完成,然后再允许您执行其他任何操作。如果您不希望这种情况发生,您可以使其异步(通常通过使用另一个线程),并且仍然保留对您的 UI 的控制,例如。
  • @CptSupermrkt 值得一提的是,async/await 的要点之一是避免产生新线程。例如,请参阅 blogs.msdn.com/b/ericlippert/archive/2010/10/29/… ,其中部分内容是“异步方法的全部意义在于您尽可能地留在当前线程上。”
  • @phoog - 生成线程与停留在正确的线程上不同。
  • @Erno 是的,这正是我评论的重点。
  • @phoog - “值得一提的是,异步/等待的要点之一是避免产生新线程。”我不同意这一点。 async/await 用于轻松编码和读取异步调用/回调。就是这样。我们可以没有。不要误会我的意思;我喜欢这些关键字。

标签: c# .net asynchronous async-await


【解决方案1】:

my introductory article in MSDN magazine开头。

然后阅读the papers on the async CTP site

然后阅读these fifteen articles:

如果您仍然有疑问,请尝试通过the async forum 提问。

【讨论】:

  • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
  • @Makyen:我鼓励你写一个完全一样的答案。这样我们都受益于您的智慧。
  • 我相信你比我更有资格。我的评论旨在提醒您,这是多年来受 SO 变化影响的答案之一。由于只是链接的集合(其中一个已死;在它死之前,在您将其添加到此处后,它发生了显着变化),因此它已经从完全可以接受变为“不是答案”。一个链接失效的事实很好地说明了为什么最好在此处包含基本要素。
  • 问题的很大一部分是这个问题实在是太宽泛了,无法在 SO Q&A 中涵盖,例如两个答案都链接到一个不只是单个博客文章,而是每个答案都链接到一个关于该主题的不同系列帖子。
  • @Makyen:那么,如果您认为此答案质量低下,但您无法写出更好的答案,请随时投票删除。
【解决方案2】:

看看this blog post,它很好地介绍和解释了异步和等待是什么。

如果你想真正了解它,看看Jon Skeet's series on async and await

【讨论】:

  • 第一个链接“这篇博文”非常清晰有用。澄清了很多事情。
  • 虽然这在理论上可以回答这个问题,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。
猜你喜欢
  • 1970-01-01
  • 2019-10-28
  • 2019-01-28
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 2018-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多