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
我做了这个小代码:
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