20
我試圖使用異步和等待做Web請求時,我發現它永遠不會過去的等待線。我從Metro應用程序執行此操作,但我也在Winforms應用程序中驗證了這個問題。異步和等待與HttpWebRequest.GetResponseAsync
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永遠不會返回?
謝謝。這就是它。感謝您的鏈接,這是非常有幫助的。 –
@Stephen,感謝您的博客文章!澄清問題:如果我在我的lib(基本上是WebClient)中使用'.ConfigureAwait(false)',我可以在調用它時使用'.Result'嗎?它似乎工作,但我不知道當我在野外放鬆時會發生什麼。 – Brad
@Brad:是的,只要你調用的異步方法做同樣的事情。但是,使用'Result'不是最佳做法;總有更好的選擇。 –