您的位置:首页 > 大数据 > 人工智能

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;
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: