C#async/await心得

结论:

  1. 异步方法的方法签名要加 async,否则就算返回 Task<T> 也是普通方法。
  2. 调用异步方法,可以加 await 或不加 await
    • 不加 await 得到的是 Task<T> 对象,得等异步执行完成,才能拿到T对象(废话:)。当前方法签名不必有 async。
    • 加 await 得到的是 T 对象。当前方法自身会马上返回,被调用方法异步执行完成后再把T对象返回给当前方法,继续往下执行当前方法的剩余代码。当前方法签名必须有 async。
  3. async 方法中执行到第1个await前。是主线程执行的(同步执行的),第1个await后代码是新线程执行的(异步执行的)。如果被调用的异步方法内部也调用其它的异步方法,也是这样的执行规则。即递归作用。
    • 如果await中循环中,则是第1次执行到await代码。
  4. Task.Wait()方法会在当前线程等待指定的task线程结束后再返回。并可以通过 Task.Result获取结果。
    (本文 2019-7首发,2023-3作了修改,对容易误解之处作了展开说明)
posted @   BillySir  阅读(371)  评论(0编辑  收藏  举报
编辑推荐:
· 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代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示