.NET Async/Await 最佳實踐

.NET 異步編程Guildlines編程

名稱 描述 例外
Avoid async void Prefer async Task methods over async void methods Event handlers
Async all the way Don’t mix blocking and async code Console main method
Configure context Use ConfigureAwait(false) when you can Methods that require con­text

 

常見異步編程問題解決方案異步

問題 方案
建立任務執行代碼 使用Task.Run或TaskFactory.StartNew(不new一個Task或Task.Start)
建立一個對操做或事件的任務包裝 使用TaskFactory.FromAsync或TaskCompletionSource<T>
支持協做式取消任務 CancellationTokenSource 或 CancellationToken
報告進度 IProgress<T> 或 Progress<T>
處理數據流 TPL Dataflow 或 Reactive Extensions
共享資源的同步訪問 信號量(SemaphoreSlim)
異常初始化資源 AsyncLazy<T>
支持以異步的生產者/消費者結構 TPL Dataflow or AsyncCollection<T>

 

參考: http://msdn.microsoft.com/en-us/magazine/jj991977.aspxasync

相關文章
相關標籤/搜索