当前位置:首页 > 每日看点

C#为何一定要用asyn和await来异步执行,不可以直接Task.Run?

卡卷网1年前 (2025-01-02)每日看点263

先说结论

其实不是"一定要用async/await",而是它们各自有不同的使用场景。就像你不会用榔头去切菜,也不会用菜刀去钉钉子一样。

举个例子,你在必胜客点了一份披萨:

<>用async/await的情况:

//服务员接单后直接去忙别的了,披萨好了会通知你 awaitOrderPizzaAsync();

<>用Task.Run的情况:

//专门叫一个服务员站在厨房门口等披萨 Task.Run(()=>OrderPizza());

看出区别了吗?async/await就像是给披萨贴上了你的取餐号,你可以先去玩干别的;而Task.Run则是专门安排了一个人盯着你的披萨,VVVVVVIP级别的待遇,但这个服务员明显是浪费在这里了,纯纯摸鱼,那怎么能行!

来点专业的各自特点

<>async/await的特点

      不会占用额外的线程适合I/O作(数据库查询、文件读写、网络请求等)能最大化利用资源

<>Task.Run的特点

      会从线程池分配新线程适合CPU密集型作(大量计算、图像处理等)可能造成不必要的线程切换开销

就像在这样的使用场景下:

//推荐:处理WeAPI请求 pulicasyncTask<string>GetDataAsync() { retnawait.GetStringAsync("api/data"); } //推荐:处理大量计算 pulicTaskProcessigData() { retnTask.Run(()=>HeyCalculation()); }

<>但是也别这么整:

//反模式!不要这样做 pulicasyncTaskDoSomethingAsync() { awaitTask.Run(()=>File.ReadAllText("file.txt"));//错啦错啦 }

这就像点个外,非要雇个专车司机24小时待命一样,多此一举!

你就记住这句话:<>I/O作用async/await,CPU密集型作用Task.Run。能解决80%场景下的问题

如果觉得文章有帮助,记得点赞关注,我是旷野,探索无尽技术!

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/6160.html

分享给朋友:

相关文章

手机用久了,垃圾都在哪里,总是内存显示不够,还很卡,这可怎么解决?

手机用久了,垃圾都在哪里,总是内存显示不够,还很卡,这可怎么解决?

大家的手机在使用一段时间之后啊,是不是都会出现又卡又慢的情况,尤其是安卓手机,这种现象更是非常明显,而且很多朋友啊,也都知道手机之所以会出现这些问题,一般都是手机安装了大量软件,而这些软件在使用过程中会产生大量的缓存垃圾,因此啊时间久了就会…

为什么大家不再提 5G 了?

现在看来,只有美国那种5g的思路是对的。 美国的运营商一开始就发现5g和4g并没有质的飞跃,无非就是提升频率/降低穿透力/提升带宽的故事。而美国运营商又是自负盈亏,因此一开始就仅在人口高密度地区或富裕地区布置5g。 虽然说人家4g也菜,但是…

下一个风口最可能是什么?

下一个风口最可能是什么?

肯定是一带一路了,国内没什么卷的空间了,现在国家正在给一带一路的第三世界国家建设基础设施,等交通打通之后,就是通信打通,通信打通就是贸易打通,未来我建议大家重仓小语种,阿拉伯语最值得学(也有其他小语种自己去查一带一路国家),将来去其他国家随…

PHP承载百万/天 访问量需要用到什么技术?

当年做一个百万PV的商城,也不过是两台2c4g的阿里云虚机罢了(其实一台就够,另外一台主要的逼着大家一定开发的时候一定要有负载均衡和横向扩容的意识)。当时框架还是Thinkphp3.2,框架提高运行效率的开关全打开,标准的lnmp模式,单机…

中国的科技为什么在最近2-3年时间像突然大爆发一样?

这个真的得感谢1998年美国在南联盟使馆投的两颗大炸弹。 在80年代中国下马了一千多个项目,用资金进口了近一百万辆小汽车。我记得小时候有一段时间从海南岛开往北方的漂亮日本小面包车,密集从村前公路上驶过,连过路的间隙都没有,就这样接连开了一个…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。