Cefsharp随机不初始化

时间:2017-06-14 14:19:12

标签: c# .net wpf chromium-embedded

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);
}

2 个答案:

答案 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,因此我不确定此解决方案是否有效。但值得一试。