同步方法调用异步方法
.GetAwaiter().GetResult()
计算函数超时,异步方法所有的回调操作都会期望返回到主线程。

所以会导致各种线程死锁。异步方法中使用ConfigureAwait(false)解决

 1 public void Check(){           //todo
 2                 //验证userid和token是否匹配
 3                 var tUserId = UserIdAndTokenValidationAsync(userId, at.UserId);
 4                 //验证参数签名是否正确
 5                 Task<bool> tvalid = CheckSignatureAsync(paramList, signature, at.Token);
 6                 //验证请求时间
 7                 Task<bool> tTicks = TicksValidationAsync(signature, timestamp);
 8
 9                 bool userIdRes = tUserId.GetAwaiter().GetResult();
10                 bool validRes = tvalid.GetAwaiter().GetResult();
11                 bool ticksRes = tTicks.GetAwaiter().GetResult();
12 }

        public async Task<bool> UserIdAndTokenValidationAsync(int requsetUserId, int tokenUserId){bool res = await Task.Factory.StartNew(() =>{return UserIdAndTokenValidation(requsetUserId, tokenUserId);}).ConfigureAwait(false);return res;}

转载于:https://www.cnblogs.com/Jerrycjc/p/9050307.html

async await 同步方法调用异步方法死锁相关推荐

  1. 一码阻塞,万码等待:ASP.NET Core 同步方法调用异步方法“死锁”的真相

    在我们 2015 年开始的从 .NET Framework 向 .NET Core 迁移的工程中,遇到的最大的坑就是标题中所说的--同步方法中调用异步方法发生"死锁".虽然在 .N ...

  2. 如何在C#中从同步方法调用异步方法?

    我有一个public async void Foo()方法,我想从同步方法中调用它. 到目前为止,我从MSDN文档中看到的所有内容都是通过异步方法调用异步方法,但是我的整个程序不是使用异步方法构建的. ...

  3. channelread0会被调用两次_值得一看:C#同步方法中如何调用异步方法?

    前言 我在写代码的时候(.net core)有时候会碰到void方法里,调用async方法并且Wait,而且我还看到别人这么写了.而且我这么写的时候,编译器没有提示任何警告.但是看了dudu的文章:一 ...

  4. java同步调用异步方法_关于同步方法里面调用异步方法的探究

    ##前言 我在写代码的时候(.net core)有时候会碰到void方法里,调用async方法并且Wait,而且我还看到别人这么写了.而且我这么写的时候,编译器没有提示任何警告.但是看了dudu的文章 ...

  5. 又踩.NET Core的坑:在同步方法中调用异步方法Wait时发生死锁(deadlock)

    之前在将 Memcached 客户端 EnyimMemcached 迁移 .NET Core 时被这个"坑"坑的刻骨铭心(详见以下链接),当时以为只是在构造函数中调用异步方法(注: ...

  6. 【转】2.2[译]async/await中阻塞死锁

    这篇博文主要是讲解在async/await中使用阻塞式代码导致死锁的问题,以及如何避免出现这种死锁.内容主要是从作者Stephen Cleary的两篇博文中翻译过来. 原文1:Don'tBlock o ...

  7. Async,Await和ConfigureAwait的关系

    在.NET Framework 4.5中,async / await关键字已添加到该版本中,简化多线程操作,以使异步编程更易于使用.为了最大化利用资源而不挂起UI,你应该尽可能地尝试使用异步编程.虽然 ...

  8. 走进异步编程的世界 - 开始接触 async/await

    序 这是学习异步编程的入门篇. 涉及 C# 5.0 引入的 async/await,但在控制台输出示例时经常会采用 C# 6.0 的 $"" 来拼接字符串,相当于string.Fo ...

  9. 【转】C# 彻底搞懂async/await

    关键: 异步方法:在执行完成前立即返回调用方法,在调用方法继续执行的过程中完成任务. async/await 结构可分成三部分: (1)调用方法:该方法调用异步方法,然后在异步方法执行其任务的时候继续 ...

最新文章

  1. 1010. 一元多项式求导
  2. PHP字符串运算结果,PHP 实现后缀表达式(接受四则运算字符串,输出计算结果,附代码)...
  3. wifi软件linux版本,[转载]Wii安装运行可用WIFI的Linux系统全攻略
  4. Python中RowIOBase详解
  5. IT与DT技术几点解释
  6. 苹果手机里微信数据删除怎么恢复?
  7. IT业9大最糟糕CEO决策(转载)
  8. Android学习笔记-传感器开发之利用传感器和Tween开发简易指南针
  9. 父类引用指向子类对象,为什么会调用的是子类中重新的方法
  10. file和base64格式转换
  11. j2ee上机任务汇总(上)
  12. 基于Tushare数据库统计混合型基金前十大重仓股持仓变化
  13. 《数值分析》-- 拉格朗日插值
  14. 淘宝/Tmall获得淘宝分类详情API返回值说明
  15. 通过Exchange 的 Powershell批量创建AD账户和邮箱
  16. PCL点云处理之凸包滤波(十三)
  17. 深度学习入门源代码下载使用mnist数据集出现错误EOFError Compressed file ended before the end-of-stream marker was reached
  18. python任务栏通知区域_Python之Bilibili自动更新邮件提醒并任务栏图标
  19. 静态路由的四种配置方法
  20. C语言的符号表和类型系统1

热门文章

  1. sql查询无结果返回空_3分钟短文 | Laravel 查询结果检查是不是空,5个方法你别用错...
  2. 复习JavaFile类_递归_综合案例
  3. LeetCode 2013. 检测正方形(字典)
  4. hadoop 单机伪分布式安装步骤
  5. LeetCode 909. 蛇梯棋(BFS)
  6. LeetCode 778. 水位上升的泳池中游泳(二分查找+dfs)
  7. LeetCode 489. 扫地机器人(DFS)
  8. LeetCode 263. 丑数 264. 丑数 II(DP)
  9. LeetCode 493. 翻转对(归并排序)
  10. html校园首页设计说明范文,网页设计作品设计说明-必看请相互转告