Проблемы при воссоздании элемента управления webBrowser в WPF - PullRequest
0 голосов
/ 21 января 2019

Когда я воссоздаю элемент управления webBrowser в WPF и затем перехожу на страницу, иногда элемент управления создается успешно и страница загружается, иногда элемент управления создается не полностью, а затем страница загружается в браузере по умолчанию, связанном с Windows (Firefox включен мой компьютер на данный момент).

Вот как я удаляю и воссоздаю веб-браузер:

 webBrowser.Dispose();
 webBrowser = null;

 webBrowser = new WebBrowser();
 tabItem_webBrowser.Content = webBrowser;
 webBrowser.HorizontalAlignment = HorizontalAlignment.Right;
 webBrowser.Height = 228;
 webBrowser.VerticalAlignment = VerticalAlignment.Top;
 webBrowser.Width = 586;
 webBrowser.RenderTransformOrigin = new Point(0.5, 0.5);
 webBrowser.Margin = new Thickness(0, 41, 10, 0);
 webBrowser.Navigated += SuppressScriptErrors;
 webBrowser.Visibility = Visibility.Visible;
 ScrollViewer.SetHorizontalScrollBarVisibility(webBrowser, ScrollBarVisibility.Visible);
 ScrollViewer.SetVerticalScrollBarVisibility(webBrowser, ScrollBarVisibility.Visible);
 webBrowser.LoadCompleted += WebBrowser_LoadCompleted;

Я пытался проверить, могу ли я проверить, инициализирован ли webBrowser с webBrowser.IsInitialized, но возникает та же проблема.

Есть ли способ убедиться, что webBrowser полностью создан перед выполнением webBrowser.navigate (url)?

Примечание. Причина, по которой я его утилизирую и воссоздаю, заключается в предотвращении утечек памяти.

Можете ли вы помочь мне с этим, пожалуйста?

Спасибо за ваше время и помощь, это очень ценится.

1 Ответ

0 голосов
/ 22 января 2019

Вы можете попробовать отложить навигацию до тех пор, пока диспетчер не завершит выполнение всех изменений, которые вы ему сообщили. Ведь ваш код там, для навигации:

Application.Current.Dispatcher.InvokeAsync(new Action(() => 
{  
    webBrowser.Navigate ……...
}), DispatcherPriority.ContextIdle);

Это должно подождать, пока диспетчер не обработает какой-либо макет и рендеринг.

...