我想提出一个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:
更多推荐
异步和等待与HttpWebRequest.GetResponseAsync
发布评论