异步和等待与HttpWebRequest.GetResponseAsync

编程入门 行业动态 更新时间:2024-10-18 08:33:27
本文介绍了异步和等待与HttpWebRequest.GetResponseAsync的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我想提出一个web请求时使用异步和等待和我发现,它一直无法完成的await线。我从地铁应用程序这样做,但我在一个WinForms应用程序也验证了这个问题。

I am trying to use Async and Await when making a web request and am finding that it never gets past the await line. I am doing this from a Metro app, but I also verified the problem in a winforms app.

public async Task<string> DoSomething() { string url = "imgur/gallery/VcBfl.json"; HttpWebRequest request = HttpWebRequest.CreateHttp(url); var ws = await request.GetResponseAsync(); return ws.ResponseUri.ToString(); ; }

如果我不使用的await,而是执行同步的等待,它的工作原理,但我需要这个异步运行。

If I don't use await and instead perform a synchronous wait, it works, but I need this to run asynchronously.

我是什么在这个code就是造成的await永不返回不见了?

What am I missing in this code that is causing the await to never return?

推荐答案

我怀疑进一步您的调用堆栈,你要么调用等待或结果对返回工作。 这将导致死锁,因为我描述我的博客。

I suspect that further up your call stack, you're either calling Wait or Result on the returned Task. This will cause a deadlock, as I describe on my blog.

请按照这些最佳实践,避免死锁:

Follow these best practices to avoid the deadlock:

  • 请不要在阻止异步 code;使用异步一路下滑。
  • 在库的方法,用 ConfigureAwait(假)。
  • Don't block on async code; use async all the way down.
  • In your "library" methods, use ConfigureAwait(false).
  • 更多推荐

    异步和等待与HttpWebRequest.GetResponseAsync

    本文发布于:2023-11-13 00:32:35,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1582914.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:HttpWebRequest   GetResponseAsync

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!