2015-11-23 12 views
7

Tôi đã nhận thấy một lỗi lạ. Điều này xảy ra khi thay đổi kích thước.Awesomium.NET Crashing on Resize - Rò rỉ bộ nhớ

Lần đầu tiên tôi nhận thấy điều đó trong khi tôi đang cố sửa các sắp xếp xaml của mình. Khi tôi cố gắng để thay đổi kích thước cửa sổ trên 2 màn hình của tôi, nội dung awesomium bắt đầu nhấp nháy và đột nhiên nội dung bị biến mất và màn hình đỏ có biểu tượng xuất hiện, ngắn sau khi vshost32.exe bị lỗi.

Tôi nghĩ tốt .. ok nó có thể có một số giới hạn chiều rộng vì vậy tôi giới hạn MaxWidth của cửa sổ trên màn hình chính của chiều rộng. Tôi nhận thấy một số flickerings là tốt trong khi tôi đang cố gắng để thay đổi kích thước theo chiều ngang, nhưng đó là tất cả, tuy nhiên khi tôi spam thay đổi kích thước và thay đổi nhiều lần chiều cao và chiều rộng cùng một vấn đề xảy ra trên maxheight 1080 và chiều rộng tối đa 1920.

enter image description here enter image description here

Chỉnh sửa2 Thông tin bổ sung: Tôi có 2 WebControls trên cùng một XAML. Khi tôi thêm nhiều, và thay đổi kích thước ... nó đã bị hỏng trong giây đầu tiên.

Chỉnh sửa (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 

Dường như với tôi rằng có một số rò rỉ meory đây.

Sau 2 GB Ram bị lãng phí, nó sẽ bị lỗi.

Đã thử dùng 8,5 GB Ram đã sử dụng, tăng lên 10,5 và sau đó bị rơi.

Tôi đã thực hiện một số thử nghiệm để tìm ra nguyên nhân gây ra lỗi này. Tôi tạo ra một vòng lặp rằng nó sẽ thay đổi kích thước cửa sổ ở 2 chiều rộng và chiều cao mỗi 50 ms

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); 
     } 
    } 

nó bị rơi một lần nữa như mong đợi, thú vị là mặc dù, rằng khi tôi gắn vào vòng

WebControl.Reload(true); 

nó thực sự đã không bị hỏng ... Bộ nhớ đang tăng lên từ 350 MBs

Có cách nào để ngăn hiển thị trong khi thay đổi kích thước?

+0

Có vẻ như một lỗi trong Awesomium. Tôi muốn tạo ra một ví dụ rất tối thiểu là repro của vấn đề và gửi nó đến trình theo dõi lỗi của họ. –

+0

Dường như Awesomium đã bị bỏ hoang trong một năm nay. – Devian

+0

Cộng đồng tại http://answers.awesomium.com/ có vẻ như nó sôi động. Tôi sẽ thử đăng ở đó. Có vẻ như phiên bản cũ hơn của công cụ Stack Overflow. –

Trả lời

0

Hãy suy nghĩ bạn chỉ có thể thay đổi kích thước sau khi điều khiển của bạn đã khởi tạo và hiển thị hoàn toàn. IMHO bitmap

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

bằng 0 hoặc không hợp lệ.

tôi đã sử dụng Awesomium trong quá khứ, gợi ý của tôi là để di chuyển đến CefSharp

https://cefsharp.github.io/

+0

Thành thật mà nói, tôi đã di cư sang CefSharp 2 ngày trước sau vài vấn đề tôi gặp phải với Awesomium. Và giờ tôi khá hạnh phúc. Tôi nghĩ cefsharp sẽ nặng hơn nhưng nó dường như chỉ là tốt, và là cách tối ưu hơn so với dự án bị bỏ rơi này. Cảm ơn bạn đã dành thời gian của bạn. – Devian