C#異步編程的好處
原文鏈接:http://www.rzrgm.cn/ysmc/p/18798097
C# 異步編程的好處
異步編程是C#中非常重要的特性,它能讓你的程序更高效、更流暢。我來用簡單的方式解釋它的好處:
1. 七竅玲瓏心 - "邊敲代碼邊和女朋友通話"
-
同步代碼就像你敲代碼時必須雙手離開鍵盤才能接女朋友的電話
-
異步代碼讓你可以邊敲代碼邊和女朋友通話,不影響寫bug,女朋友也哄不好
2. 人力資源合理應用 - "餐廳服務員"
-
同步就像服務員一次只服務一桌,其他桌干等著
-
異步就像服務員點完一桌菜就去服務下一桌,等菜好了再回來
3. 人員合理化運用 - "不浪費線程"
-
同步會占用線程傻等(像雇人站著等水燒開)
-
異步在等待時釋放線程去做其他事(讓工人去干別的活)
4. 客戶至上 - "不轉圈圈"
-
同步操作時用戶界面會凍結(轉圈圈)
-
異步操作時界面保持響應(可以繼續操作)
5. 適合IO操作 - "快遞驛站"
-
讀取文件、網絡請求等IO操作特別適合異步
-
你不需要等著快遞的到來,讓快遞員放驛站,你空了再去拿好了
簡單代碼對比
1 public class TestService 2 { 3 private readonly IHttpClientFactory _httpClientFactory; 4 5 public TestService(IHttpClientFactory httpClientFactory) 6 { 7 _httpClientFactory = httpClientFactory; 8 } 9 10 // 同步方式 - 會卡住UI 11 public object GetData() 12 { 13 using var httpClient = _httpClientFactory.CreateClient(); 14 var data = httpClient.GetByteArrayAsync("https://example.com"); 15 // 在獲取完成前什么都做不了 16 return data; 17 } 18 19 // 異步方式 - 不會卡住UI 20 public async Task<object> GetDataAsync() 21 { 22 using var httpClient = _httpClientFactory.CreateClient(); 23 var data = await httpClient.GetByteArrayAsync("https://example.com"); 24 // 在獲取過程中程序可以干別的 25 return data; 26 } 27 }
同樣感謝大佬們的觀看!
本文來自博客園,作者:一事冇誠,轉載請注明原文鏈接:http://www.rzrgm.cn/ysmc/p/18798097

浙公網安備 33010602011771號