尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
C#关于同步方法里面调用异步方法的探究
前言我在写代码的时候(.net core)有时候会碰到void方法里,调用async方法并且Wait,而且我还看到别人这么写了。而且我这么写的时候,编译器没有提示任何警告。但是看了dudu的文章:一码阻塞,万码等待:ASP.NET Core 同步方法调用异步方法“死锁”的真相 了解了,这样写是有问题的。但是为什么会有问题呢?我又阅读了dudu文章里提到的一篇博文:.NET Threadpool starvation, and how queuing makes it worse 加上自己亲手实验,写下自己的理解,算是对dudu博文的一个补充和丰富吧。同步方法里调用异步方法同步方法里调用异步方法,一种是wait() 一种是不wait()voidfun(){ funAsync.Wait(); funAsync();}这两种场景都没有编译错误。首先我们来看一下,在 void里调用 async 方法,并且要等待async的结果出来之后,才能进行后续的操作。usingSystem;usingSystem.Threading;usingSystem.Threading.Tasks;namespaceConsoleTool2{classProgram{static void Main(string[] args) { Producer(); }static void Producer(){varresult =Process().Result;//或者//Process().Wait(); }static asyncTaskboolProcess(){awaitTask.Run(() = { Thread.Sleep(1000); }); Console.WriteLine("Ended - "+DateTime.Now.ToLongTimeString());returntrue; } }}咱们看这个Producer,这是一个void方法,里面调用了异步方法Process(),其中
RELATED

相关推荐

SovereignNegotiation-Bench:评估AI代理在隐私与合规约束下的谈判能力

SovereignNegotiation-Bench:评估AI代理在隐私与合规约束下的谈判能力

1. 项目概述:当你的数字替身去谈判 想象一下,你需要在网上购买一项服务,比如一份保险,或者租一套房子。传统的流程是,你打开一个网站或App,面对一个由平台设定的、充满复杂条款和隐藏选项的界面&#xff0c…

📅 2026/10/28 13:22:41
Blender 5.2/5.3 DLSS 4.5与新布料解算器实战评估指南

Blender 5.2/5.3 DLSS 4.5与新布料解算器实战评估指南

这类工具更新最值得先看的不是功能列表,而是新功能到底能不能在你的机器上稳定跑起来,以及它解决了哪些实际生产流程里的具体痛点。Blender 5.2/5.3 的预告里,DLSS 4.5 和新布料解算器是核心,但很多人容易把它们当成“性能提升”和…

📅 2026/10/14 7:55:24
STM32 CubeMX代码质量剖析:从“屎山”到整洁工程的实践指南

STM32 CubeMX代码质量剖析:从“屎山”到整洁工程的实践指南

这次我们来看一个在STM32开发者中颇具争议的话题:CubeMX生成的代码质量。很多开发者,尤其是从标准库或寄存器开发转过来的工程师,初次接触CubeMX时,都会被它“点点点”就能生成初始化代码的便捷性所吸引。但用久了,尤其…

📅 2026/10/2 0:54:24
MORE NEWS

更多资讯

📰

Python面向对象编程入门:从类与对象到继承多态和异常处理

简介:《Python Object-Oriented Programming(Fourth Edition)》是Packt于2021年出版、由Steven F. Lott与Dusty Phillips合著的英文PDF电子书,面向希望系统掌握Python面向对象编程并构建健壮、可维护应用与库的初中级开发者。内容…

📰

HTML5分片上传技术实现大文件高效传输

1. 内网大文件传输的痛点与HTML5解决方案在企业内网环境中,大文件传输一直是困扰开发者的高频需求场景。我曾参与过一个制造业企业的内部文档管理系统升级项目,其中需要处理平均500MB以上的CAD设计图纸传输。传统表单上传方式在Chrome浏览器下超过2GB就会…

📰

OpenShell 深度解析:从命令解释器到开放能力外壳的工程实践

1. 从"OpenShell"这个名字说起:它到底指什么第一次看到"OpenShell"这个词,很多人会下意识地把它和"开源终端""命令行外壳"联系起来。这个直觉不算错,但也不完整。在真实的工程语境里,Ope…

📰

告别 perfect:impeccable 的用法、搭配与避坑指南

我手机里一直躺着一条没发出去的英文朋友圈草稿,内容是想夸朋友订的那家民宿——位置好、装修细、老板还贴心。憋了半天,脑子里翻来覆去只有 perfect、nice、awesome 这几个老朋友,怎么看都觉得差点意思。后来我专门查了一下,真正…

📰

价值校准:重构营销技能的底层操作系统

1. 这不是“学营销”,而是重建你和钱的关系“marketingskills”——这个词最近在招聘平台、自由职业接单站、甚至朋友圈晒学习计划的截图里高频出现,但它根本不是教你怎么写朋友圈文案、怎么投信息流广告、怎么搞裂变海报。我带过37个从零起步转行做私域…

📰

拆解 claude-mem:为 Claude Code 构建 AI 长期记忆层

你有没有遇到过这种场景:昨天刚和 AI 助手讨论完数据库选型,今天开个新会话想继续,结果它一脸茫然,连你用的是 PostgreSQL 都不记得,还要从头解释一遍。我在过去一周里被这个问题折磨得够呛,所以才认真把一…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬