最新要闻
- 雪榕生物:雪榕源已于2023年第一季度推出产品,具体您可以通过抖音“雪榕膳食旗舰店”详细了解
- 准点下班被辞退仲裁胜诉 当事人:为讨领导开心的无效加班真没必要
- 用上“最黑的黑” 比亚迪汉DM-p战神版实拍:3.7秒加速的性能怪兽 世界热门
- 热点聚焦:喝的人越来越少!星巴克中国最贵单品更换原料但不官宣 网友炮轰降本不降价
- 国产Chiplet小芯片工艺稳定量产 国际客户4nm工艺产品已出货 焦点日报
- 微软690亿美元收购动视暴雪交易获欧盟批准
- 注册会计师报考费用2023
- 【新要闻】年轻人越来越吃不起鸭脖?女子武汉坐高铁满车人都在啃鸭脖 直言被馋哭
- 出海国产手游战绩:米哈游超腾讯 《原神》第一、《崩坏:星穹铁道》第七 天天快看点
- 管住嘴果然有用!科学家:保持饥饿感或可延缓衰老 每日时讯
- 世界观点:国产电动车反攻欧洲 法国急忙出手限制:砍掉3.8万元补贴
- 迪卡侬双11促销虚标原价被罚!网友大赞:消费者苦假促销久矣-每日头条
- 智能补全音源损失!索尼蓝牙耳机暴降130元
- 当前时讯:罕见!抗阿尔茨海默病“第二人”出现
- 速降35℃!黑鲨冰封散热背夹3 Pro预售 首销199元_当前热议
- 世界今日讯!4000元档良心所在 Redmi Book 14处理器公布:45W标压12代酷睿
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
C#异步方法async/await的三种返回类型
有群友问C#异步方法async返回值Task和void的区别?看似简单,但不容易把它们用好。在C#中的异步编程已经成为现代编程的标配,异步方法(async/await)是实现异步编程的一种常用方式。在异步方法中,可以使用 Task 或 void 作为返回类型,还可以使用ValueTask返回类型。本文将介绍异步方法中3个返回类型 Task 、void和ValueTask。
一、 void类型
使用 void 作为异步方法的返回类型,表示该方法将执行异步操作,但不会返回任何结果。由于异步方法无法返回结果,因此调用该方法的代码无法使用 await 关键字来异步等待其结果。相反,可以使用事件或回调函数来处理异步操作的结果。但是,使用回调函数或事件来处理异步操作的结果比使用 await 关键字更加繁琐和难以维护。示例如下:
(相关资料图)
public async void DoSomethingAsync(){ // 异步操作 await LongRunningOperationAsync(); // 操作完成后触发事件 OnOperationCompleted();}
使用场景:
从上看是比较难用的,那么我们看看它的具体使用场景有哪些?一般在 Windows Forms 应用程序中,使用异步方法来处理 UI 事件的方式就是使用 void 作为返回类型。在异步方法中,可以执行一些 IO 操作、计算等操作,并在操作完成后通过委托或事件通知 UI 线程更新 UI。普通方法不建议使用,可以直接返回Task。
二、Task类型
Task 比较常用并且推荐使用的返回类型。使用 Task 作为异步方法的返回类型,可以让异步方法返回一个异步操作的结果。调用该方法的代码可以使用 await 关键字来异步等待该结果。当异步操作完成时,Task 将包含异步操作的结果。这种方式可以更好地支持异步编程和错误处理。案例如下:
//返回一个 Task 对象,表示该方法将返回一个异步操作的结果.public async Task CalculateAsync(){ // 异步计算操作 int result = await LongRunningOperationAsync(); // 返回异步操作的结果 return result;}
Task 的使用场景
当异步方法需要返回一个异步操作的结果时,应该使用 Task 作为返回类型。在这种情况下,Task 可以让调用代码使用 await 关键字来等待异步操作的结果。Task 还提供了一些有用的方法和属性,如异常处理、取消操作等,可以更好地支持异步编程和错误处理。
例如,在 Web API 中,使用异步方法来处理 HTTP 请求的方式就是使用 Task 作为返回类型。在异步方法中,可以执行一些 IO 操作、数据库查询、计算等操作,并将结果封装到 Task 对象中返回。客户端可以使用 await 关键字等待异步操作完成,并获取操作的结果。
三、ValueTask类型
ValueTask 是 .NET Core 2.1 引入的一种新的异步编程模式,用于优化内存分配和性能,尤其是在大量的异步操作中。ValueTask 作为一种新的异步编程模式,可以在某些情况下更加高效地处理异步操作。ValueTask 本身是一个结构体,它可以用于打包异步操作的结果,并且可以避免 Task 对象的不必要的分配。在使用 ValueTask 时,如果异步操作已经完成,则可以直接从 ValueTask 中获取结果,而无需等待 Task 对象的状态。如果异步操作尚未完成,则可以通过异步等待来等待操作完成。
//使用 ValueTask作为返回类型,可以避免创建 Task 对象和其他不必要的开销。public async ValueTask ComputeAsync(int x, int y){ // 模拟一些耗时的计算操作awaitTask.Delay(1000); // 计算结果varresult=x+y; // 返回结果 return result;}//欢迎关注公众号:DOTNET开发跳槽,领取海量面试题。加微信号xbhpnet入群
使用场景
1、大量的异步操作
在高并发的情况下,使用 Task 对象可能会导致大量的内存分配和垃圾回收。使用 ValueTask 可以避免不必要的内存分配,从而提高性能和效率。
2、频繁的异步操作
在一些需要频繁执行的异步操作中,使用 Task 可能会产生过多的垃圾,而使用 ValueTask 可以更好地管理内存并提高性能。
3、长时间运行的异步操作
在一些长时间运行的异步操作中,使用 Task 可能会导致大量的内存分配和垃圾回收,而使用 ValueTask 可以更好地管理内存并提高性能。
结语
Task 、void和ValueTask 作为异步方法的返回类型,应该根据实际需求和编程方式来选择合适的类型,大家可以参考文中他们各自的使用场景。希望本文对你有所收获,你对Task 、void和ValueTask 三个返回类型有什么看法欢迎留言讨论。
参考:微软官方文档,chatgpt
来源公众号:DotNet开发跳槽
关键词:
C#异步方法async/await的三种返回类型
PhotoShop的平替: GIMP
雪榕生物:雪榕源已于2023年第一季度推出产品,具体您可以通过抖音“雪榕膳食旗舰店”详细了解
准点下班被辞退仲裁胜诉 当事人:为讨领导开心的无效加班真没必要
用上“最黑的黑” 比亚迪汉DM-p战神版实拍:3.7秒加速的性能怪兽 世界热门
热点聚焦:喝的人越来越少!星巴克中国最贵单品更换原料但不官宣 网友炮轰降本不降价
国产Chiplet小芯片工艺稳定量产 国际客户4nm工艺产品已出货 焦点日报
微软690亿美元收购动视暴雪交易获欧盟批准
阿里云数据库ClickHouse产品和技术解读
高效联调,可靠发布!华为云推出CodeArts Release发布管理服务
玩转Zabbix智能告警:降噪、排班、认领、升级、IM协同
机器学习服务语音合成,解锁智能养娃新趋势|速看
注册会计师报考费用2023
【新要闻】年轻人越来越吃不起鸭脖?女子武汉坐高铁满车人都在啃鸭脖 直言被馋哭
出海国产手游战绩:米哈游超腾讯 《原神》第一、《崩坏:星穹铁道》第七 天天快看点
管住嘴果然有用!科学家:保持饥饿感或可延缓衰老 每日时讯
世界观点:国产电动车反攻欧洲 法国急忙出手限制:砍掉3.8万元补贴
迪卡侬双11促销虚标原价被罚!网友大赞:消费者苦假促销久矣-每日头条
史上最全 Activiti 学习教程,一文搞定最强工作流引擎! 天天快消息
可观测性三支柱?远不止此!|全球快播报
每日观察!Linux-特殊权限设置(SUID、SGID、SBIT)
智能补全音源损失!索尼蓝牙耳机暴降130元
“北向互换通”上线 人民币国际化再提速-资讯
国家统计局:4月份社会消费品零售总额同比增长18.4%
当前时讯:罕见!抗阿尔茨海默病“第二人”出现
速降35℃!黑鲨冰封散热背夹3 Pro预售 首销199元_当前热议
世界今日讯!4000元档良心所在 Redmi Book 14处理器公布:45W标压12代酷睿
16GB大内存稳了!iQOO Neo8 Pro官宣搭载性能铁三角 最资讯
世界新动态:就看这款了!蔚来全新ES6上市定档:“高端中型SUV天花板”登场
蔚来起诉网红索赔500万!公关总监:绝不姑息造谣、污蔑行为
尘埃歌词我的爱像尘埃在线试听 尘埃歌词我的爱像尘埃
pg_enterprise_views安装及使用
JS中的偏函数
虚拟机网络配置_全球资讯
天天即时看!华东医药:5月15日融资买入1046.79万元,融资融券余额9.64亿元
暴汗燃脂!腾讯首款体感健身应用《舞动极光》发布:手机+电视就能玩
速读:一键开盖 耐热抗摔:哈尔斯Tritan材质单手开盖水杯14.9元发车
《王者荣耀》第四款敦煌皮肤、八周年限定皮肤都来了_环球热门
多地气温超36℃ 今夏还会“热哭”吗?专家称没有去年热 今日热闻
技术不成熟 无人驾驶汽车在旧金山“疯狂搞事”:还拦不住-快消息
时讯:国家网信办:集中清理仿冒新闻单位、新闻主播账号10.7万个
狂神说ngnix笔记(附md文件下载链接)
前沿资讯!Upstart (UPST.US)向私人信贷商店Castlelake出售40亿美元消费分期贷款 股价涨超20%
今晚油价或迎年内“最大跌幅”!95号汽油有望回归7元时代
天天热门:当事人回应10万元买8套房:是特列但房价确实便宜 我买房只看价格
当前快报:50TB仅398元!国产小龙盘升级:新增联网模式AI聊天
张艺谋《满江红》最终票房45.44亿 位列中国影史第6位
焦点简讯:中银香港完成首批“北向互换通”交易
【读财报】科创板一季度业绩速览:近七成公司实现盈利 机械、通信等行业表现突出 今日聚焦
天天看点:我市统计承诺实践创新获评国家优秀案例
每日观察!俞敏洪:中国的农村不能凋敝 不能让农民打理农村
云南13亩小岛1元起拍引关注:网友直呼可以当岛主了
32岁女生相亲角因条件高被男子怼哭 上海有房、5万彩礼:网友吵翻
观速讯丨中国影史第10!《流浪地球2》最终票房40.29亿 打破34项影史纪录
环球信息:国产新SSD发布:基于RISC-V架构 全面兼容国产自研系统、处理器平台
学系统集成项目管理工程师(中项)系列22a_信息化知识(上)
2022年01月06日最新发布:索尼Xperia1II5G售价1199欧元
广东情侣住酒店凌晨被人开门闯入 服务员记错房间号:网友直呼可怕
当前焦点!骨灰级技术大牛左耳朵耗子(陈皓)突发心梗离世。
基于Arduino和ESP8266的JSON数据获取与解压之和风天气-全球快讯
Cryptohack wp (GENERAL篇)|世界热消息
使用策略模式重构 if/elseif/elseif
电磁炉辐射范围多少米_电磁炉对孕妇有辐射吗
外卖平台热销榜第一店铺环境简陋:画面斑驳不堪
环球今日报丨终极能源!盖茨、贝索斯押注的可控核聚变:中国公司跟进了
【独家焦点】丰田要给纯电车装手动挡!我看它是真急了
老外上网课最喜欢用的电脑 现在却变成了电子垃圾
高温来袭!北方30℃以上范围连成一片|全球焦点
今日快看!中国东方教育(00667.HK):5月15日南向资金增持4.35万股
焦点观察:作为这家数码潮牌的孵化人,我们真心想推荐一下这个产品
惠普打印机弹出用户使用第三方墨盒警告 称对硬件性能造成威胁
《霍格沃茨之遗》登顶PS4 Fami通日本实体游戏销量榜现已公布
电影《流浪地球2》5月15日结束公映 累计总票房高达40.29亿
网传北京软星技术团队解散 宇峻奥汀游戏制作人谢宗辉回应
报道显示小龙虾价格一路走低 从此前的20元每斤爆降到10元每斤
Bing搜索桌面端市场份额下降 谷歌仍占据行业龙头地位
《刺客信条》15周年限量手办现已发售 打造专属猫奴的潮玩形象
《超级马里奥兄弟大电影》已成功超越小黄人 成为有史以来票房收入第四高动画
网传苹果将在2023年全球开发者大会公开首款MR头显装置 于9月实现量产
环球观察:频繁放屁说明身体有病?医生:这多半与3个因素有关,别不当回事
2023年中国本科生就业报告发布 IT产业依旧为吸金圣器
花样啃老?回家做“全职儿女”年轻人 40岁裸辞父母每月开4千 专家称别歧视
性能最强曲面屏旗舰!vivo X90S关键参数曝光|世界速递
生产力神器!华为笔记本新品来袭
快看:Docker入门与实战-初识Docker
7个很有特点的HTTP代理服务器
今日最新!Java并发教程_编程入门自学教程_菜鸟教程-免费教程分享
【环球热闻】kafka 磁盘迁移
天天热点评!多彩中亚 丝路新篇丨现代化的设备、丰富的教学资源……师生“点赞”中亚首家鲁班工坊
环球简讯:外观、内饰全面革新!全新别克君越正式上市:17.99万起
焦点快播:TP-Link双旗舰Wi-Fi 7路由开卖:覆盖面积/网速秒杀Wi-Fi 6E
这就是满分水冷了!鑫谷昆仑II 360 ARGB评测:超高颜值还能给主板降温9度_全球热点评
32岁女生相亲角因条件高被男子怼哭:本人是短视频网红 回应称不是剧本
小摩增持长城汽车(02333)约714.44万股 每股作价约9.93港元
3.OS-Virtualization|进程API 天天日报
全球最资讯丨拜登就与共和党人谈妥债务上限表达乐观
“AI歌手”走红网络!谁侵了谁的权?专家解读
比亚迪汉KTV麦克风串频 后车竟然能听到前车人说话
“完全免费”的电视机见过么?专门分出一块屏幕放广告
当事妈妈回应儿子送花被骂:家里困难 深感后悔