分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

.net 同步方法调用异步方法假死

发布时间:2023-09-06 02:30责任编辑:苏小强关键词:暂无标签

最近使用.net core 开发了一个项目,具体就不说了跟项目本身无关。先上一段代码

  

//示例代码//前端调用方法public string GetName(){ ?return GetUserName().Result;}//服务端实现public async Task<string> GetUserName(){ ??var userModel=await GetUserModel(); ??return userModel.Name;}public async Task<UserModel> GetUserModel(){ ??数据库查询}

很简单的代码对吧,就是一个查询数据库返回用户名称。

 然并卵.....

程序每次执行到

var userModel=await GetUserModel();

这句代码时候就进入假死状态,由于我测试是使用控制台程序,而控制台程序无法重现这个问题,还把调用方给批了一通。囧
经过千山万水的查找后,根据dudu这篇文章https://www.cnblogs.com/dudu/p/9860959.html脑中灵光一闪,难道是~~好吧,真的是。
在同步方法中调用async异步方法导致程序假死。具体为什么会造成这个现象,我还没搞懂(哈哈,打我啊)。解决办法就是在代码中进行了一次中转,
代码如下

//前端调用方法public string GetName(){  return Task.Factory.StartNew(async () =>  {    return await GetUserName();   }).Result;}

.net 同步方法调用异步方法假死

原文地址:https://www.cnblogs.com/guozhongxiang/p/10297626.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved