GeckoWebBrowser在任何CPU中崩溃

时间:2018-11-14 15:13:42

标签: c# geckofx

在C#.Net 4.7.2 WPF项目中,我正在从UserControl加载GeckoWebBrowser组件。我正在使用nuget包id =“ Geckofx60.64” version =“ 60.0.18”。

我的解决方案和项目在VS2017中配置为“任何CPU”。

为了获得Firefox64存储库,我添加了nuget包id =“ Geckofx60.64.Windows” version =“ 0.7.0”。

一切正常,然后我使用以下代码调用“ index.html”页面

public partial class Simulator : UserControl
{
    readonly string indexPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Templates", "index.html");

    private GeckoWebBrowser _browser;

    public Simulator()
    {
        InitializeComponent();
        Xpcom.Initialize("Firefox64");

        var host = new WindowsFormsHost();
        _browser = new GeckoWebBrowser();

        host.Child = _browser;
        GridWeb.Children.Add(host);
    }

    private void Datacontext_ConfigurationChanged(object sender, System.EventArgs e)
    {
        Dispatcher.Invoke(() =>
            _browser.Navigate(indexPath)
        );
    }

    private void Simulator_OnDataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
    {
        var datacontext = DataContext as ServicesViewModel;
        if (datacontext != null)
        {
            datacontext.ConfigurationChanged -= Datacontext_ConfigurationChanged;
            datacontext.ConfigurationChanged += Datacontext_ConfigurationChanged;
        }
    }
}

应用程序中的逻辑是,每当我对本地对象进行一些更改时,便会刷新浏览器。

每次更改都会调用

Datacontext_ConfigurationChanged

除了在刷新过程中我可以随机接收到此异常之外,它都运行得很好

"System.AccessViolationException: Attempted to read or write protected memory.."

此异常使我的应用程序崩溃,并且我找不到该异常的任何解决方案。 谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我改为Geckofx45.64,现在可以了。