微軟發布了Microsoft.Bcl.Async的最終版本,參看博客Microsoft.Bcl.Async is Now Stable。該包允許開發者在.NET 4、Silverlight 4和Windows Phone 7.5使用C# 5和VB中的異步特性。該包由三個庫組成:Microsoft.Bcl、Microsoft.Bcl.Async和Microsoft.Bcl.Build。由於使用了程序集統一的方式,解決方案中的所有工程都必須引用這三個庫。
C#發展至今,已經從最初的1.0到了5.0版本,不如來回顧一下各個版本都帶來了什么:
- 1.0版本 - 基本C#語法。
- 2.0版本 - 泛型的支持,CLR進行了升級,從根本上支持了運行時泛型。
- 3.0版本 - LINQ,添加了
from
/join
等類SQL關鍵字,添加了擴展函數,添加了編譯期動態類型var關鍵字。 - 4.0版本 - dynamic關鍵字,CLR進行升級,加入DLR,開始對動態進行友好的支持。同時加入動態參數、參數默認值、泛型協變等特性。
- 5.0版本 - async/await關鍵字,將異步變得更為簡單。
async/await 將異步的編程模型統一為同步模型,簡化開發復雜度,提升生產效率。微軟正式發布了Microsoft.Bcl.Async的最終版本,這讓.NET4里頭也可以用上async/await,而不需要把項目更改為.net 4.5.
具體的實踐和原理,可以看一看[C# 5.0 vNext - New Asynchronous Pattern],不過這篇文章里的 SwitchTo 方法已經被移除了,理由這樣很危險。具體可以參看StackOverflow的討論 Why was “SwitchTo” removed from Async CTP / Release?
相關文章:
Best Practices for c# async/await
http://www.codeproject.com/Articles/518856/Task-Parallel-Library-and-async-await-Functionalit
http://weblogs.asp.net/dixin/archive/2012/11/02/understanding-c-async-await-1-compilation.aspx
http://blog.zhaojie.me/2012/04/exception-handling-in-csharp-async-await-1.html
http://blog.zhaojie.me/2012/04/exception-handling-in-csharp-async-await-2.html