2012-01-18 31 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

相關問題