当前位置: 首页 > news >正文

【C#】async关键字修饰后有无await的影响

文章目录

    • 测试
    • 总结
    • 拓展:js的async await
    • 问题
    • 参考

测试

来自微软官网的说法:

异步方法通常包含 await 运算符的一个或多个匹配项,但缺少 await 表达式不会导致编译器错误。 如果异步方法未使用 await 运算符标记悬挂点,则该方法将作为同步方法执行,不管异步修饰符如何。 编译器将为此类方法发布一个警告。

A.如图有两个方法都被async关键字修饰,其中EachProductionLinerejectRateThirdReport方法体里没有await
,GetMonthOutput反之。Test方法调用二者。
在这里插入图片描述
被async关键字修饰没有await会提示“此异步方法缺少await运算符,将以同步方式运行”在这里插入图片描述EachProductionLinerejectRateThirdReport提示“不会等待”在这里插入图片描述
EachProductionLinerejectRateThirdReport提示“不会等待”
在这里插入图片描述

总结

async关键字修饰的方法,没有await等运算符的修饰,方法将以同步的方式运行,只是会在被其他方法调用的时候如不加awaitIDE一样会提示”不会等待“

拓展:js的async await

async function语法

  1. 自动将常规函数转换成Promise,返回值也是一个Promise对象
  2. 只有async函数内部的异步操作执行完,才会执行then方法指定的回调函数
  3. 异步函数内部可以使用await

async function name([param[, param[, … param]]]) { statements }

name: 函数名称。
param: 要传递给函数的参数的名称
statements: 函数体语句。
返回值: 返回的Promise对象会以async function的返回值进行解析,或者以该函数抛出的异常进行回绝。
在这里插入图片描述
await语法

  1. await 放置在Promise调用之前,await
    强制后面点代码等待,直到Promise对象resolve,得到resolve的值作为await表达式的运算结果
  2. await只能在async函数内部使用,用在普通函数里就会报错

[return_value] = await expression;

expression: 一个 Promise 对象或者任何要等待的值。
返回值:返回 Promise 对象的处理结果。如果等待的不是 Promise 对象,则返回该值本身。
在这里插入图片描述

问题

只加async 不配合await那些会开线程么?

优先级相同的情况下,按线程分配资源 ,也看操作系统调用策略了,用线程跑理论上会获得更多cpu资源吧在线程池还够用的时候?

参考

使用 Async 和 Await 的异步编程(C# 和 Visual Basic)
async/await解析

http://www.lryc.cn/news/13541.html

相关文章:

  • Interspeech2022 | 一种基于元辅助学习的低资源口语语义理解方法
  • File类的用法和InputStream,OutputStream的用法
  • Java多线程——Thread类的基本用法
  • 【C++】类和对象练习——日期类的实现
  • [LeetCode周赛复盘] 第 333 场周赛20230219
  • 数字化时代,如何做好用户体验与应用性能管理
  • Python爬虫(7)selenium3种弹窗定位后点击操作,解决点击登录被隐藏iframe无法点击的登陆问题
  • 如何对项目健康度进行测量?评估项目健康状况
  • 美国原装二手keysight E4980A(安捷伦)2MHZ LCR表
  • 《clean coder》:关于摆烂,争论和心态
  • jenkins下载与简单使用
  • 3|物联网控制|计算机控制-刘川来胡乃平版|第3章:计算机总线技术 补充串行总线部分|课堂笔记|ppt
  • Blazor入门100天 : 身份验证和授权 (3) - DB改Sqlite
  • 阅读源码和查看官方文档,是解决问题最高效的办法。
  • 云原生流量管理系统中 Service , Ingress 和 Endpoint 的关系
  • 给你安利几款好用的谷歌浏览器插件
  • JDK定时器Timer原理
  • vue3中使用swiper完整版教程
  • 某个div的滚动条样式
  • Spring Boot框架基础介绍
  • Git - 在主分支上创建分支并提交代码
  • 第三届无线通信AI大赛分享交流会暨颁奖典礼顺利举办,大赛圆满收官
  • 程序的本质与类的说明
  • 单片机——显示方式
  • leetcode 1~10 学习经历
  • 代码质量与安全 | 一文了解高级驾驶辅助系统(ADAS)及其开发中需要遵循的标准
  • 2023年安徽省职业院校“磐云杯”网络安全竞赛任务书
  • 九龙证券|豪掷超6000万,10转3派6元,今年第二只高送转股出炉!
  • Java开发 - 数风流人物,还看“微服务”
  • Springboot 整合 分布式定时任务 XXL-JOB