gpt4 book ai didi

c# - 我的控制台应用程序以代码 0 退出的原因是什么?

转载 作者:行者123 更新时间:2023-12-05 01:37:44 29 4
gpt4 key购买 nike

我试图通过其 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com