Я работаю с .Net версией awesomium 1.7.5.1 и у меня возникла проблема. Если создать несколько (двух достаточно) WebView, работающие через прокси, то при одновременной загрузке страниц на этих WebView загружается только страница на одном из них, все остальные перестают отвечать и что-либо прогружать. Повторить проблему можно следующим кодом:
private static void Main()
{
//Создаем поток, в котором будет жить обновление WebCore
var isWebCoreRunning = false;
var webCoreThread = new Thread(() =>
{
WebCore.Initialize(new WebConfig());
WebCore.Run((sender, args) => isWebCoreRunning = true);
}) {Name = "WebCore Thread", IsBackground = true};
//Запускаем поток и ждем, когда WebCore запустится
webCoreThread.Start();
while (!isWebCoreRunning)
Task.Delay(10).Wait();
//Создаем параметры прокси сервера
var proxyConfig = String.Format("{0}:{1}", "proxyHost", proxyPort);
//Создаем два WebView
var webView1 = WebCore.DoWork(() =>
{
var webPreferences = new WebPreferences { ProxyConfig = proxyConfig };
var webSession = WebCore.CreateWebSession(webPreferences);
return WebCore.CreateWebView(100, 100, webSession);
});
var webView2 = WebCore.DoWork(() =>
{
var webPreferences = new WebPreferences { ProxyConfig = proxyConfig };
var webSession = WebCore.CreateWebSession(webPreferences);
return WebCore.CreateWebView(100, 100, webSession);
});
//Подписываемся на событие запроса регистрации. Нужно, чтобы авторизовать прокси
webView1.LoginRequest += OnLoginRequest;
webView2.LoginRequest += OnLoginRequest;
//Подписываемся на успешную загрузку страницы
webView1.LoadingFrameComplete += (sender, args) => Console.WriteLine("X");
webView2.LoadingFrameComplete += (sender, args) => Console.WriteLine("X");
//Переходим одновременно по адресу
WebCore.QueueWork(() => webView1.Source = new Uri("https://www.google.ru/"));
WebCore.QueueWork(() => webView2.Source = new Uri("https://www.google.ru/"));
Console.ReadKey();
}
private static void OnLoginRequest(object sender, LoginRequestEventArgs e)
{
e.Username = "proxyLogin";
e.Password = "proxyPassword";
e.Handled = EventHandling.Modal;
e.Cancel = false;
}
В итоге в консоль выведется только один "Х". Если прокси не прописывать, то все работает отлично и параллельно можно работать и загружать страницы с несколькими разными WebView.
Прошу помощи! Может кто-то встречался с такой проблемой или придумал способы обхода ее.