在WPF中重新创建webBrowser控件时出现问题

时间:2019-01-21 16:10:29

标签: c# wpf web controls

当我在WPF中重新创建webBrowser控件并导航到页面时,有时会成功创建该控件并加载页面,有时未完全创建该控件,然后会在与Windows关联的默认浏览器中加载页面(Firefox我的计算机)。

这是删除和重新创建webBrowser的方法:

 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.navigate(url)之前,是否有办法确保已完全创建webBrowser?

注意:之所以要配置和重新创建它,是为了防止内存泄漏。

你能帮我吗?

感谢您的时间和帮助,非常感谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试将导航推迟到调度员完成您告诉它的所有更改之前。 完成所有代码之后,导航:

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

这应该等到调度员处理完所有布局和渲染之后。