Awesomium.NET重新调整大小 - 内存泄漏

时间:2015-11-23 00:05:15

标签: c# wpf memory-leaks awesomium

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

我在尝试修复xaml路线时首先注意到了它。当我尝试 在我的2个屏幕上调整窗口大小,awesomium内容开始闪烁,突然内容消失,带有徽标的红屏出现,在vshost32.exe之后缩短 坠毁。

我想好了..好吧它可能有一些宽度限制所以我限制了主屏幕宽度上窗口的MaxWidth。当我试图水平调整它时,我注意到了一些闪烁,但这就是全部,但是当我发送垃圾邮件大小并改变高度和宽度很多时,同样的问题出现在maxheight 1080和max width 1920.

enter image description here enter image description here

Edit2 其他信息: 我在同一个XAML上有2个WebControl。 当我添加多个,并调整大小... 它撞到了第一秒。

修改(1)

[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的浪费拉姆之后,它会崩溃。

尝试使用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上升和下降

无论如何都要在调整大小时阻止渲染?

1 个答案:

答案 0 :(得分:0)

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

 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/