C#异步编程的好处

打印 上一主题 下一主题

主题 1650|帖子 1650|积分 4950

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
原文链接:https://www.cnblogs.com/ysmc/p/18798097
C# 异步编程的好处

异步编程是C#中非常紧张的特性,它能让你的步伐更高效、更流畅。我来用简朴的方式解释它的好处:
1. 七窍玲珑心 - "边敲代码边和女朋友通话"


  • 同步代码就像你敲代码时必须双手离开键盘才能接女朋友的电话
  • 异步代码让你可以边敲代码边和女朋友通话,不影响写bug,女朋友也哄不好
2. 人力资源合理应用 - "餐厅服务员"


  • 同步就像服务员一次只服务一桌,其他桌干等着
  • 异步就像服务员点完一桌菜就去服务下一桌,等菜好了再返来
3. 职员合理化运用 - "不浪费线程"


  • 同步会占用线程傻等(像雇人站着等水烧开)
  • 异步在等待时开释线程去做其他事(让工人去干别的活)
4. 客户至上 - "不转圈圈"


  • 同步操纵时用户界面会冻结(转圈圈)
  • 异步操纵时界面保持响应(可以继续操纵)
5. 适合IO操纵 - "快递驿站"


  • 读取文件、网络请求等IO操纵特殊适合异步
  • 你不需要等着快递的到来,让快递员放驿站,你空了再去拿好了
简朴代码对比
  1. 1 public class TestService
  2. 2 {
  3. 3     private readonly IHttpClientFactory _httpClientFactory;
  4. 4
  5. 5     public TestService(IHttpClientFactory httpClientFactory)
  6. 6     {
  7. 7         _httpClientFactory = httpClientFactory;
  8. 8     }
  9. 9
  10. 10     // 同步方式 - 会卡住UI
  11. 11     public object GetData()
  12. 12     {
  13. 13         using var httpClient = _httpClientFactory.CreateClient();
  14. 14         var data = httpClient.GetByteArrayAsync("https://example.com");
  15. 15         // 在获取完成前什么都做不了
  16. 16         return data;
  17. 17     }
  18. 18
  19. 19     // 异步方式 - 不会卡住UI
  20. 20     public async Task<object> GetDataAsync()
  21. 21     {
  22. 22         using var httpClient = _httpClientFactory.CreateClient();
  23. 23         var data = await httpClient.GetByteArrayAsync("https://example.com");
  24. 24         // 在获取过程中程序可以干别的
  25. 25         return data;
  26. 26     }
  27. 27 }
复制代码
同样感谢大佬们的观看!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表