当我在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?
注意:之所以要配置和重新创建它,是为了防止内存泄漏。
你能帮我吗?
感谢您的时间和帮助,非常感谢。
答案 0 :(得分:0)
您可以尝试将导航推迟到调度员完成您告诉它的所有更改之前。 完成所有代码之后,导航:
Application.Current.Dispatcher.InvokeAsync(new Action(() =>
{
webBrowser.Navigate ……...
}), DispatcherPriority.ContextIdle);
这应该等到调度员处理完所有布局和渲染之后。