2012-01-18 39 views
12

我总是看到Silverlight中使用的关键字async,但想知道是否有人用虚拟角色解释它是什么以及何时使用它及其好处。如果你能解释,请大加赞赏。谢谢。什么是异步并等待,什么时候在windows开发中使用它们?

+0

这来了很多与线程这是一个非常大的话题,但如果你只是想一个基本的实用一句话回答,异步是指两个事情发生在彼此独立的时间。例如,你有一个查询数据库的按钮。如果你不想让它异步,那么你的整个程序就会停下来等待它完成,然后再让你做其他任何事情。例如,如果您不希望发生这种情况,可以使其异步(通常使用其他线程),并仍保留对用户界面的控制权。 – CptSupermrkt 2012-01-18 06:46:04

+0

@CptSupermrkt它提到async/await的一个要点是避免产生新的线程*。例如,参见http://blogs.msdn.com/b/ericlippert/archive/2010/10/29/asynchronous-programming-in-c-5-0-part-two-whence-await.aspx,其中部分地说:“尽可能地保留在当前线程上的异步方法的全部意义。” – phoog 2012-01-18 18:53:16

+0

@phoog - 产卵线程与停留在正确线程上不一样。 – 2012-01-20 06:12:10

回答

12

看看this blog post,它给出了一个很好的介绍和解释什么是异步和等待。

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

+0

第一个链接“这篇博文”非常清晰和有用。澄清了很多事情。 – 2015-07-29 00:27:28

+3

虽然这可能会在理论上回答这个问题,[这将是更可取的](/ meta.stackoverflow.com/q/8259)在这里包括答案的基本部分,并提供参考链接。 – Makyen 2017-07-08 04:23:33

15

开始于my introductory article in MSDN magazine

然后阅读the papers on the async CTP site

然后阅读these fifteen articles:

如果您仍然有问题,请尝试询问the async forum

+2

虽然这可能在理论上回答这个问题,[这将是更可取的](/ meta.stackoverflow.com/q/8259)在这里包括答案的基本部分,并提供链接供参考。 – Makyen 2017-07-08 04:24:41

+0

@Makyen:我鼓励你写一个完全相同的答案。那样我们都会从你的智慧中受益。 – 2017-07-10 04:25:16

+2

我相信你比我更合格。我的评论意在更多地提醒您,这是多年来SO改变所影响的答案之一。由于仅仅是一个链接集合(其中之一已经死亡;在它死亡之前它在你添加它之后发生了显着变化),它从完全可以接受变成“不是答案”。事实上,一条链路已经死亡,这是一个很好的例子,说明为什么在这里包含必要条件是可取的。 – Makyen 2017-07-10 04:51:29

相关问题