有没有办法解决Awesomium 1.7 WebCore关闭错误
本文关键字:WebCore 错误 解决 Awesomium 有没有 | 更新日期: 2023-09-27 17:57:06
我正在使用Awesomium开发一个网络浏览器,并且正在使用最新版本。但是,当我处理WebControls和关闭WebCore(也处理WebControls)时,它有一些问题。
有谁知道解决这个问题的方法?提前致谢
我已经对此进行了一些测试。我试图使用WPF版本的WebControl,发现它可能会泄漏得非常严重,特别是当您随着时间的推移创建和销毁大量WebControls时。所以,我正在使用WindowsFormsHost并使用WinForms版本的WebControl,即使它没有泄漏,我也遇到了您描述的相同问题。事实证明,您希望在清理窗口的句柄后显式调用 Dispose U。
在 WPF 中,我继承了 WindowsFormsHost 并指定了对 DestroyWindowCore 的覆盖,如下所示:
protected override void DestroyWindowCore(System.Runtime.InteropServices.HandleRef hwnd) {
base.DestroyWindowCore(hwnd);// clean up handles
// Disposing here prevents access violation from crashing non-debug instances
// Confirmed to prevent access violation on WebCore shutdown as well
webControl1.Dispose();
webControl1 = null;
}
// This code seems to work in WinForms, I placed this in Form1.cs:
protected override void DestroyHandle() {
base.DestroyHandle();
webControl1.Dispose();
}
我建议使用不同的位置来处理控件的位置。通常在主机释放其句柄之后。我可以确认我不再有这个问题,并且Awesomium.Windows.Forms.WebControl在Dispose上正常运行
编辑,我已在此处将我的测试项目上传到 DropBox。该解决方案适用于Visual Studio 2012,面向.net 4.5。希望这有帮助!
我通过在主窗体中的 FormClosing 事件中添加一些代码来解决它:
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
foreach(WebControl awWebControl in WebCore.Views)
{
//Dispose all active views in WebCore
awWebControl.Dispose();
}
//then you can Shutdown the WebCore
WebCore.Shutdown();
}
希望这有帮助