Async和Await与HttpWebRequest.GetResponseAsync
我正在尝试在发出Web请求时使用Async和Await,并且发现它永远不会超过await行。 我是通过Metro应用程序执行此操作,但我也在winforms应用程序中validation了该问题。
public async Task DoSomething() { string url = "https://imgur.com/gallery/VcBfl.json"; HttpWebRequest request = HttpWebRequest.CreateHttp(url); var ws = await request.GetResponseAsync(); return ws.ResponseUri.ToString(); ; }
如果我不使用await而是执行同步等待,它可以工作,但我需要它以异步方式运行。
我在这段代码中遗漏了什么导致await永不返回?
我怀疑你的调用堆栈更进一步,你要么在返回的Task
上调用Wait
或Result
。 正如我在博客中描述的那样,这将导致死锁 。
请遵循以下最佳做法以避免死锁:
上述就是C#学习教程:Async和Await与HttpWebRequest.GetResponseAsync分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
- 不要阻止
async
代码; 一直使用async
。 - 在“库”方法中,使用
ConfigureAwait(false)
。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1025898.html