c# - Puppeteer 启动后软件卡住

标签 c# .net wpf xaml puppeteer-sharp

我创建了一个小应用程序,它应该通过 Puppeteer Sharp 从 Internet 获取一些数据,问题是在我实例化浏览器之后,软件会毫无错误地卡住。

public partial class MainWindow : Window
{
    public Handler Handler { get; } = new Handler();

    public MainWindow()
    {
        InitializeComponent();            
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        Handler.Init(Handler).Wait();
    }
}

如您所见,我有 Handler,其中包含软件的所有属性:

public class Handler
{
    private static Url URL = new Url("https://www.diretta.it/");
    public static Browser Browser { get; set; }

    public async Task<bool> Init(Handler prop)
    {
        DotNetEnv.Env.Load("./config.env");

        // The problem's here
        Browser = await Puppeteer.LaunchAsync(new LaunchOptions
        {
            Headless = true,
            ExecutablePath = Environment.GetEnvironmentVariable("CHROME_PATH"),
        });

        return true;
    }
}

CHROME_PATH 是这样的:CHROME_PATH="C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"

我做错了什么?我也有最新版本的 ChromePuppeteerSharp

最佳答案

Window_Loaded 事件方法更改为 async 并在 Init 方法、事件处理程序方法上执行 await是一个异常(exception)。在这种情况下,使用 async void 而不是 async Task 是可以的。 - 引用资料(Should I avoid 'async void' event handlers?):

private async void Window_Loaded(object sender, RoutedEventArgs e) 
{  
   await Handler.Init(Handler);
}

关于c# - Puppeteer 启动后软件卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63002798/

相关文章:

c# - 使用 C# 和 WMI 在远程计算机上的本地管理员组中添加和删除域用户

c# - 关闭 .Netcore IHostedService 作为控制台应用程序

c# - 双击发生时防止单击 WPF 控件

c# - 更改 MVC4 中的默认 ValidationSummary 模板

c# - 使用 DRY 和分而治之原则链接的异步方法

c# - 如何探索正在运行的 wpf 应用程序?

c# - 实例化所有实现通用接口(interface)实例的类

c# - 属性更新后调用任务

.net - WPF 模糊图像 - 位图类

c# - 列表框不显示特定对象的值(数据绑定(bind))