async await 同步方法调用异步方法死锁
2018-05-17 11:59
811 查看
同步方法调用异步方法
.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; }
相关文章推荐
- 同步调用异步方法how-would-i-run-an-async-taskt-method-synchronously
- .NET 4.5 使用async和await关键字调用异步方法
- 使用async和await将同步方法包装成异步方法
- C# 中 async/await 调用传统 Begin/End 异步方法
- 【转】.NET 4.5 使用async和await关键字调用异步方法
- 在同步方法中调用异步方法时如何避免死锁问题
- 又踩.NET Core的坑:在同步方法中调用异步方法Wait时发生死锁(deadlock)
- .NET/C# 使用async和await关键字调用异步方法
- 一码阻塞,万码等待:APS.NET Core 同步方法调用异步方法“死锁”的真相
- 又踩.NET Core的坑:在同步方法中调用异步方法Wait时发生死锁(deadlock)
- Asp.net Core 异步调用 Task await async 的梳理
- 使用异步方式调用同步方法
- C#使用异步方式调用同步方法
- C#的新特性体验(异步方法的同步调用)
- 尝试解决在构造函数中同步调用Dns.GetHostAddressesAsync()引起的线程死锁
- java 同步调用第三方sdk提供异步监听方法
- NodeJS-Promise、await、async异步变同步
- 用异步的方式调用同步方法
- 使用异步方式调用同步方法(实例详解)
- C#的新特性体验(异步方法的同步调用)