You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8中两段Async/Await异步代码是否功能等价?

.NET 8下两段C#代码的功能等价性分析

两段代码功能不等价,核心差异在于异步操作的执行方式:

第一段代码的执行逻辑

  1. 先启动_aRepo.List的异步任务,得到getResultTask(此时异步操作已在后台开始执行)
  2. 若request.PageIndex和request.PageSize都不为null,会等待_myRepo.CountAsync完成
  3. 最后等待getResultTask完成获取结果

当条件满足时,_aRepo.List和_myRepo.CountAsync是并行执行的——两个异步任务会同时在后台运行,总耗时接近两个任务中耗时较长的那个。

第二段代码的执行逻辑

  1. 先判断request.PageIndex和request.PageSize是否都不为null,若是则等待_myRepo.CountAsync完成
  2. 之后才启动_aRepo.List的异步任务并等待其完成

此时两个异步操作是串行执行的——必须等CountAsync完全结束后,List任务才会开始,总耗时是两个任务的耗时之和。

额外说明

  • 当request.PageIndex或request.PageSize为null时,两段代码逻辑一致,仅执行_aRepo.List操作
  • 并行执行的第一段代码在条件满足时效率更高,但如果两个异步操作依赖共享资源(如数据库连接),需注意资源竞争的潜在影响

内容的提问来源于stack exchange,提问作者Scott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 12:25:59