我试图通过其 url 调用一个站点来构建一个网络爬虫,但是当我尝试从等待的 url 中获取项目时,我的应用程序停止并显示此消息:
blablah.exe (process 1512) exited with code 0.
To automatically close the console when debugging stops, enable Tools->Options->Debugging->Automatically close the console when debugging stop
我认为这不是代码问题,也许是我的 visual studio 调试器的问题?因为我一生都看不到它是什么。
这是一个 .net 核心命令行应用
一些代码以防万一
static void Main(string[] args)
{
GetHtmlAsync();
}
private static async void GetHtmlAsync()
{
var url = "https://blahblah.com";
var client = new HttpClient();
var html = await client.GetStringAsync(url);
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
var newsList = htmlDoc.DocumentNode.Descendants("table")
.Where(node => node.GetAttributeValue("class","")
.Equals("itemList")).ToList();
Console.WriteLine(newsList);
Console.Read();
}
}
调试时它甚至从未达到:
var htmlDoc = new HtmlDocument();
有什么想法吗?
最佳答案
这里有几个问题
1) 当您调用 GetHtmlAsync()
时,您并没有等待它,这意味着您的应用程序继续运行它之后的代码(其中没有),导致应用程序退出
2) 你应该 avoid async void
除了事件处理程序,而是返回 async Task
修改后的代码可能是这样的
static async Task Main(string[] args)
{
await GetHtmlAsync();
}
private static async Task GetHtmlAsync()
{
//Do stuff
}
请注意,为了使用async Task Main
,您至少需要使用 C# 7.1
关于c# - 我的控制台应用程序以代码 0 退出的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60569200/