繁体   English   中英

调用 HttpClient GetAsync 但应用程序冻结秒并作为同步模式工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM