J'ai fait ce petit code:Awesomium erreur multithreading
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");
}
Pour essayer de faire quelques multi-threading avec différentes vues Web faisant la même chose en même temps.
Chaque fois que j'appuie sur le bouton une fois qu'il fonctionne très bien et me montre « DocumentReady » dans la console mais quand je presse une fois de plus, il me donne cette erreur:
System.InvalidOperationException: 'The WebCore is already initialized.'
Il fait beaucoup de sens parce que je l'ai déjà initialisé une fois auparavant, mais existe-t-il un moyen d'exécuter ce script plusieurs fois? Awesomium ne doit s'exécuter que dans un thread.
Vous initialisez 'WebCore' à chaque fois que vous cliquez sur le bouton. Assurez-vous d'initialiser ist juste une fois. Par exemple sur le début de l'application ou quelque chose. Ou vous pouvez vous souvenir si vous avez initialisé le WebCore avant avec un drapeau. –
Eh bien, je dois initialiser le webcore dans le même fil que le webview et d'autres choses Awesomium. – Samhakadas
Je vois awesomium ne semble pas être threadsafe et l'air désuet. Pourquoi ne pas utiliser le 'WebClient' natif ou quelque chose comme' ChromiumFX'? –