async await 同步方法调用异步方法死锁
生活随笔
收集整理的這篇文章主要介紹了
async await 同步方法调用异步方法死锁
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
同步方法調(diào)用異步方法
.GetAwaiter().GetResult()
計算函數(shù)超時,異步方法所有的回調(diào)操作都會期望返回到主線程。
所以會導致各種線程死鎖。異步方法中使用ConfigureAwait(false)解決
1 public void Check(){//todo 2 //驗證userid和token是否匹配 3 var tUserId = UserIdAndTokenValidationAsync(userId, at.UserId); 4 //驗證參數(shù)簽名是否正確 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;}
?
轉(zhuǎn)載于:https://www.cnblogs.com/Jerrycjc/p/9050307.html
總結(jié)
以上是生活随笔為你收集整理的async await 同步方法调用异步方法死锁的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring中的用到的设计模式大全
- 下一篇: log4net日志文件的应用