C#等待使用

Flo*_*alk 1 c# .net-core

我试图使用HtmlAgilityPack.NETCore获取网页将网页加载到程序中。问题在于调试直接从第一个Using语句跳出,因此根本不调用代码和第二个using。没有异常或其他东西被抛出。程序以退出代码0结尾。我在做什么错?我正在使用.net Core 2.2

HttpClient client = new HttpClient();
List<string> htmlContent = new List<string>();
using (var response = await client.GetAsync(URL))
{
    using (var content = response.Content)
    {
        var result = await content.ReadAsStringAsync();
        var document = new HtmlDocument();
        document.LoadHtml(result);
        foreach (HtmlNode node in document.DocumentNode.SelectNodes("//text()"))
        {
            htmlContent.Add(node.InnerText);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*ary 6

程序以退出代码0结尾

初学时的两个规则async

  1. 避免async void; 用async Task代替
  2. await您的所有任务。因此,如果调用返回a的方法,请Task确保await对其进行处理。

随着您的成长async,这两个规则都可能会有所改变。但是遵循上述规则将使学习 变得容易得多async

因此,您发布的代码应该在async Task方法中。调用方法应该await是该任务,然后是async Task方法,依此类推。一直到Main,应该是async Task Main方法。请注意,这是C#7.1语言功能,因此,如果使用VS2017而不是VS2019创建此项目,则需要将语言版本设置latest