C#async/await心得
结论:
- 异步方法的方法签名要加 async,否则就算返回
Task<T>
也是普通方法。 - 调用异步方法,可以加 await 或不加 await
- 不加 await 得到的是
Task<T>
对象,得等异步执行完成,才能拿到T对象(废话:)。当前方法签名不必有 async。 - 加 await 得到的是 T 对象。当前方法自身会马上返回,被调用方法异步执行完成后再把T对象返回给当前方法,继续往下执行当前方法的剩余代码。当前方法签名必须有 async。
- 不加 await 得到的是
- async 方法中执行到第1个await前。是主线程执行的(同步执行的),第1个await后代码是新线程执行的(异步执行的)。如果被调用的异步方法内部也调用其它的异步方法,也是这样的执行规则。即递归作用。
- 如果await中循环中,则是第1次执行到await代码。
- Task.Wait()方法会在当前线程等待指定的task线程结束后再返回。并可以通过 Task.Result获取结果。
(本文 2019-7首发,2023-3作了修改,对容易误解之处作了展开说明)
博主简介:佘焕敏(shé),洋名 Billy Sir。
关注编程基础技术,并致力于研究软件的自动化生成。 对编程规范化、面向对象的极致使用也有着浓厚的兴趣。 同时非常希望能够写程序到65岁。
只有工匠精神,才能把常人觉得单调乏味的代码,当作作品雕刻成艺术品。
重点:这里几乎每一篇文章,都是我认真创作的,凝结了心血。写作从来都不是一件容易的事,对从小语文不好的我而言,是难上加难。而且,你发现没有,文中没有广告。这篇文章介绍了为什么要写这些文章。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南