async await 同步方法调用异步方法死锁
2024-08-30 23:11:07
同步方法调用异步方法
.GetAwaiter().GetResult()
计算函数超时,异步方法所有的回调操作都会期望返回到主线程。
所以会导致各种线程死锁。异步方法中使用ConfigureAwait(false)解决
public void Check(){ //todo //验证userid和token是否匹配 var tUserId = UserIdAndTokenValidationAsync(userId, at.UserId); //验证参数签名是否正确 Task<bool> tvalid = CheckSignatureAsync(paramList, signature, at.Token); //验证请求时间 Task<bool> tTicks = TicksValidationAsync(signature, timestamp); bool userIdRes = tUserId.GetAwaiter().GetResult(); bool validRes = tvalid.GetAwaiter().GetResult(); bool ticksRes = tTicks.GetAwaiter().GetResult(); }
public async Task<bool> UserIdAndTokenValidationAsync(int requsetUserId, int tokenUserId) { bool res = await Task.Factory.StartNew(() => { return UserIdAndTokenValidation(requsetUserId, tokenUserId); }).ConfigureAwait(false); return res; }
最新文章
- Smart3D系列教程2之 《为什么三维重建效果这么差?——探探那些被忽略的拍照要求和技巧》
- c#.net中参数修饰符ref,out ,params解析
- T4模板——一个神奇的代码生成器
- RabbitMQ Exchange中的fanout类型
- 打开VS2012的创建单元测试功能
- AJAX-----14HTML5中新增的API---files
- 用python requests库写一个人人网相册爬虫
- CF 33B String Problem
- Mysql limit性能优化(小offset与大offset)
- struct 和typedef struct的区别
- ASP.NET-SHA256加密方法
- 安装inotify-tools监控工具
- Vue学习Day002
- 软件工程(FZU2015) 赛季得分榜,第9回合
- What are some good books/papers for learning deep learning?
- 流媒体之HLS——综述
- 潭州课堂25班:Ph201805201 第十三课 文件 (课堂笔记)
- layui使用iconfont
- tabindex属性用法
- Android 模仿微信发送图片 钟罩效果
热门文章
- Abstract factory抽象工厂--对象创建型
- 百练1088:滑雪 【DP】+【DFS】
- UVa 11475 - Extend to Palindrome
- HDU2082 找单词 【母函数】
- cocos2d-x 3.0 常见问题及解决
- ios3--UIView的常见方法
- Android之仿今日头条顶部导航栏效果
- 神经网络结构设计指导原则——输入层:神经元个数=feature维度 输出层:神经元个数=分类类别数,默认只用一个隐层 如果用多个隐层,则每个隐层的神经元数目都一样
- shell脚本-高级变量
- thinkphp vender