Awesomium 多线程错误

Awesomium Multithreading error

我做了这个小代码:

private void button1_Click(object sender, EventArgs e)
{
    Task t = new Task(() =>
    {
        tt += "a";
        WebCore.Initialize(new WebConfig(), true);
        WebView browser = WebCore.CreateWebView(1024, 768, WebViewType.Offscreen);
        browser.DocumentReady += browser_DocumentReady;
        browser.Source = new Uri("https://www.google.com/");
        WebCore.Run();
    });
    t.Start();
    Console.ReadLine();
}

static void browser_DocumentReady(object sender, UrlEventArgs e)
{
    Console.WriteLine("DocumentReady");
}

尝试使用不同的 Web 视图进行一些多线程操作,同时执行相同的操作。

每次我按下按钮一次它工作正常并在控制台中显示 "DocumentReady" 但是当我再次按下它时,它给我这个错误:

System.InvalidOperationException: 'The WebCore is already initialized.'

很有意义,因为我之前已经初始化过一次了,但是有没有办法运行这个脚本多次?

awesomium 只需要 运行 在一个线程中。没有解决方法。你不能从不同的线程启动多个实例。尽管所有导航都将发生在不同的单独进程中,但事件将在主线程中进行探测(仅供参考,如果您使用 winforms,它必须是 gui 线程)

如果您想要与 webclient 的会话 (cookie),您可以在每个会话中使用单独的 CookieContainer