【发布时间】:2022-03-01 04:05:31
【问题描述】:
如何在 Main 中等待控制台应用程序中的 RunScrapper() 函数完成?
static void Main(string[] args)
{
RunScrapper();
}
static async void RunScrapper()
{
// Download the Chromium revision if it does not already exist
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision);
// Create an instance of the browser and configure launch options
Browser browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = false
});
// Create a new page and go to Bing Maps
Page page = await browser.NewPageAsync();
await page.GoToAsync("https://www.google.es");
}
如果我输入await RunScrapper();,它表示 Main() 应该是异步的,而 RunScrapper() 应该返回一个 Task。
问题是程序运行并没有任何反应,因为程序在 RunScrapper() 执行任何操作之前关闭。
【问题讨论】:
-
您知道您也可以将 Main 方法更改为异步吗?
-
另外,不要让你的
RunScrapper使用async void,而是使用async Task。 -
改用
static async Task Main()。绝对将RunScrapper更改为async Task RunScrapper。只有异步事件处理程序才能使用async void。不能期待这样的方法。现在,您的应用程序在不等待异步方法完成的情况下退出 -
需要的主要方法:静态异步任务 Main(string[] args)
标签: c#