Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多线程错误_C#_Multithreading_Visual Studio_Webview_Awesomium - Fatal编程技术网

C# 多线程错误

C# 多线程错误,c#,multithreading,visual-studio,webview,awesomium,C#,Multithreading,Visual Studio,Webview,Awesomium,我做了一个小代码: 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.Offsc

我做了一个小代码:

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。确保只初始化ist一次。例如在应用程序启动或其他方面。或者你还记得之前是否用标志初始化过WebCore。好吧,我必须在webview和其他Awesomium东西的同一线程中初始化WebCore。我发现Awesomium似乎不是线程安全的,看起来过时了。为什么不使用本机的
WebClient
或类似的
ChromiumFX
?好吧,WebClient不支持多个会话,所以每个webview都有不同的cookie和会话,我不知道ChromiumFX支持多个会话吗?好的,你知道其他的Awesomium替代方案吗?使用多线程和多会话?我认为所有这些都需要相同的东西