gpt4 book ai didi

c# - 使用 HttpWebRequest.GetResponseAsync 进行异步和等待

转载 作者:IT王子 更新时间:2023-10-29 04:34:04 28 4
gpt4 key购买 nike

我在发出 Web 请求时尝试使用 Async 和 Await,但发现它永远不会超过等待线。我是通过 Metro 应用程序执行此操作的,但我也在 winforms 应用程序中验证了该问题。

public async Task<string> DoSomething()
{
string url = "http://imgur.com/gallery/VcBfl.json";
HttpWebRequest request = HttpWebRequest.CreateHttp(url);

var ws = await request.GetResponseAsync();

return ws.ResponseUri.ToString(); ;
}

如果我不使用 await 而是执行同步等待,它可以工作,但我需要它异步运行。

这段代码中我缺少什么导致 await 永远不会返回?

最佳答案

我怀疑在您的调用堆栈中,您正在对返回的 Task 调用 WaitResultThis will cause a deadlock, as I describe on my blog .

遵循这些最佳实践来避免死锁:

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

关于c# - 使用 HttpWebRequest.GetResponseAsync 进行异步和等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12701545/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com