Csharp/C#教程:Async和Await与HttpWebRequest.GetResponseAsync分享


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上调用WaitResult 。 正如我在博客中描述的那样,这将导致死锁 。

请遵循以下最佳做法以避免死锁:

上述就是C#学习教程:Async和Await与HttpWebRequest.GetResponseAsync分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  1. 不要阻止async代码; 一直使用async
  2. 在“库”方法中,使用ConfigureAwait(false)

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1025898.html

(0)
上一篇 2022年1月9日
下一篇 2022年1月9日

精彩推荐