В проекте CF .Net 4.7.2 WPF я загружаю компонент GeckoWebBrowser из UserControl. Я использую пакет nuget id = "Geckofx60.64" version = "60.0.18".
В VS2017 для моего решения и проекта настроено «Любой ЦП».
Чтобы получить репозиторий 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.."
Это исключение приводит к сбою моего приложения, и я не могу найти решение для этого исключения.
Спасибо за вашу помощь!