The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

撰寫不用 async await 的 C# 非同步方法並使用 Unwrap 方法簡化程式碼

BenchmarkDotNet 實測驗證發現,只要在現有的非同步方法加上 async/await 關鍵字,其方法的執行效能就有可能會降低 2,700 倍之多。這是因為 async/await 關鍵字會讓 C# 編譯器在編譯程式時,會將非同步方法轉換成一種狀態機的實作,這樣的轉換會增加程式的執行時間。因此,我們在大多數「函式庫」中的程式碼,幾乎都不會使用 async/await 關鍵字來撰寫程式。然而我們在函式庫中實作程式時,是有可能遇到多次非同步等待的情況,此時我們就可以使用 TaskExtensions.Unwrap 擴充方法來簡化寫法,今天這篇文章我就來說說這個開發技巧。

... 繼續閱讀 ...