c# - Awesomium.NET 在调整大小时崩溃 - 内存泄漏

标签 c# wpf memory-leaks awesomium

嗯,我注意到一个奇怪的错误。这发生在调整大小时。

我第一次注意到它是在尝试修复我的 xaml 对齐方式时。当我尝试 在我的 2 个屏幕上调整窗口大小 awesomium 内容开始闪烁,突然内容消失,出现带有 Logo 的红屏,紧接着 vshost32.exe 坠毁。

我觉得不错.. 好吧,它可能有一些宽度限制,所以我将窗口的 MaxWidth 限制在主屏幕的宽度上。当我试图水平调整它的大小时,我也注意到了一些闪烁,但仅此而已,但是当我发送垃圾邮件调整大小并多次更改高度和宽度时,同样的问题发生在最大高度 1080 和最大宽度 1920 上。

enter image description here enter image description here

Edit2 附加信息: 我在同一个 XAML 上有 2 个 WebControl。 当我添加多个并调整大小时... 它在第一秒就崩溃了。

编辑(一)

[1123/013232:INFO:(0)] WebCore is now online.
[1123/013232:INFO:(0)] Running Awesomium 1.7.5.1
[1123/013247:WARNING:Awesomium.NET(0)] System.OutOfMemoryException: Insufficient memory to continue the execution of the program.
   at System.Windows.Media.Imaging.WriteableBitmap..ctor(Int32 pixelWidth, Int32 pixelHeight, Double dpiX, Double dpiY, PixelFormat pixelFormat, BitmapPalette palette)
   at Awesomium.Windows.Controls.WebViewPresenter.Awesomium.Core.ISurface.Initialize(IWebView view, Int32 width, Int32 height)
   at Awesomium.Core.Surface.oQVs2ZKQlyYpFHm4aaM(Object , Object , Int32 width, Int32 height)
   at Awesomium.Core.Surface.InitializeDirector(IWebView view, Int32 width, Int32 height)
   at Awesomium.Core.Surface..ctor(IWebView view, Int32 width, Int32 height, ISurface surfaceImpl)
   at Awesomium.Core.SurfaceFactory.Nu5RdsobJP(IntPtr  , Int32  , Int32  )
   at Awesomium.Core.NativeMethods.WebCore_Update(HandleRef jarg1)
   at Awesomium.Core.WebCore.UpdateThunk()
[1123/013247:ERROR:ipc_channel_win.cc(261)] pipe error: 109

在我看来,这里似乎存在一些内存漏洞。

在 2 GB 的 Wasted Ram 后,它崩溃了。

尝试使用 8.5 GB 的 Ram,升至 10.5 然后崩溃。

我已经进行了一些测试以找出导致此错误的原因。 我创建了一个循环,它会每 50 毫秒以 2 个宽度和高度调整窗口大小

 public async void testc() {
        for (int i = 0; i <= 1000; i++)
        {
            this.Width = 1700 + i % 2;
            this.Height = 950 + i % 2;

            await Task.Delay(50);
        }
    }

它按预期再次崩溃,有趣的是,当我在循环中附加时

WebControl.Reload(true);

它实际上并没有崩溃......内存在 350 MB 上下波动

有没有办法在调整大小时阻止渲染?

最佳答案

认为只有在控件完全初始化并显示后才能调整大小。恕我直言位图

 at System.Windows.Media.Imaging.WriteableBitmap..ctor(Int32 pixelWidth, Int32 pixelHeight, Double dpiX, Double dpiY, PixelFormat pixelFormat, BitmapPalette palette)

大小为零或无效。

我以前用过Awesomium,我的建议是迁移到CefSharp

https://cefsharp.github.io/

关于c# - Awesomium.NET 在调整大小时崩溃 - 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33861843/

相关文章:

c# - 使用 OData 查询字符串时抛出 MissingManifestResourceException

c# - 在控制台应用程序中异步和等待

ios - 调试 NSJSONSerialization 内存泄漏

c# - 无法从我的解决方案访问配置管理器

c# - 如何在 PDFSharp 中使用私有(private)字体

wpf - Powershell 中的自定义 XAML 命名空间

wpf - 以 Grid 为模板的 ItemsControl : add control to Grid

java - 为什么 Intellij 在使用 Thread.Sleep 的 Hello World 上会出现堆内存泄漏?

javascript - 是否可以在 FileReader 之后清理内存?

c# - LINQ 加入列表列表