在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.."
此异常使我的应用程序崩溃,并且我找不到该异常的任何解决方案。 谢谢您的帮助!
答案 0 :(得分:1)
我改为Geckofx45.64,现在可以了。