[英]call HttpClient GetAsync but app freezes seconds and works as sync mode
下面是我获取 HTML 页面的代码
public static async Task<string> GetUrltoHtml(string url)
{
string s;
using (var client = new HttpClient())
{
var result = client.GetAsync(url).Result;
//Console.WriteLine("!!!"+result.StatusCode);
s = result.Content.ReadAsStringAsync().Result; //break point
}
return s;
}
线
var result = client.GetAsync(url).Result;
导致应用程序冻结秒并作为同步模式工作
欢迎您的评论
根据文档
访问属性的 get 访问器会阻塞调用线程,直到异步操作完成; 相当于调用Wait方法。
所以获取Result
是一个阻塞动作。 您应该改用await
。
s = await result.Content.ReadAsStringAsync();
(当结果准备好并且您只想获取它时, Result
很有用。或者在某些情况下您想阻塞线程(但不推荐)。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.