Cefsharp有时无法初始化。控件保持空白,没有任何反应。但是一旦我重新启动程序,它就会起作用。它是完全随机的,它总是通过重新启动来修复。
由于它完全随机,我不知道如何处理这个错误,甚至不知道是什么导致了它。
我在浏览器上有一些按钮可以完美加载,但浏览器显示为空白。
如果
,我试图在此设置断点if (Browser == null)
{
Environment.Exit(0);
}
在MetroWindow_Loaded事件上,但它没有触发,因此浏览器不为null,但是某些内容无法初始化。
有关如何处理此错误的任何建议?
由于
编辑:
我加载了一个加载谷歌地图v3的静态html。这在MetroWindow_Loaded事件中执行:
var html = System.IO.File.ReadAllText(@".\Resources\Mapa.html");
Browser.LoadHtml(html);
这是XAML标签
<wpf:ChromiumWebBrowser Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" Grid.RowSpan="2" x:Name="Browser" ConsoleMessage="Browser_OnConsoleMessage" LoadingStateChanged="Browser_OnLoadingStateChanged"/>
Edit2:所以当出现错误时我手动执行这些行:
var html = System.IO.File.ReadAllText(@".\Resources\Mapa.html");
Browser.LoadHtml(html);
并加载浏览器:
浏览器不为空,并且无法初始化,但也是如此 a)metroWindow_Loaded没有开火 b)metroWindow_Loaded正在解雇&#34;太快&#34;因此Browser.LoadHtml(html)没有加载HTML。
是否有更合适的事件来运行此代码?
Edit3:这就是MainWindow的内容,也许它值得一提。
public MainWindow()
{
InitializeComponent();
_mapaController = new MapaController(this);
Browser.RegisterAsyncJsObject("boundAsync", _mapaController, BindingOptions.DefaultBinder);
var login = new LoginView();
var res = login.ShowDialog(); //this dialog waits for user input
if (res != true) Environment.Exit(0);
}
答案 0 :(得分:0)
做了一个似乎有用的丑陋的解决方法:
在mainWindow上添加了事件:
Activated="MainWindow_OnActivated"
private void MainWindow_OnActivated(object sender, EventArgs e)
{
if (Browser.Address != null) return;
var html = System.IO.File.ReadAllText(@".\Resources\Mapa.html");
Browser.LoadHtml(html);
}
如果有更优雅的解决方案,欢迎
答案 1 :(得分:0)
你的头衔&#34; Cefsharp随机没有初始化&#34;可能会产生误导。顺便说一下,尝试将浏览器的可见性属性设置为可见。
我知道,这听起来很傻。我之前在WinForms中遇到过这个问题(通过将 Visible 属性更改为 true 来解决),而不是WPF,因此我不确定此解决方案是否有效。但值得一试。