2015-11-23 20 views
7

Çok garip bir hata olduğunu farkettim. Bu yeniden boyutlandırmada gerçekleşir.Awesomium.NET Yeniden Boyutlandırma Üzerinde Çöküyor - Bellek Sızıntısı

Önce xaml hizalamalarımı düzeltmeye çalışırken farkettim. Ben benim 2 ekranları arasında pencereyi yeniden boyutlandırma sırasında awesomium içeriği titreşiyor ve aniden içerik kayboldu ve logo ile kırmızı ekran vshost32.exe çöktü sonra kısa oldu.

İyi düşünmüştüm. Tamam, bazı genişlik sınırlamaları olabilir, bu nedenle Pencerenin MaxWidth'i Ana Ekran Genişliği'nde sınırlandırdım. Ben yatay olarak yeniden boyutlandırmak için çalışırken bazı flickerings aswell farkettim ama boyutlandırmak spam ve birçok kez yüksekliğini değişince o ancak hepsi ve aynı sorun maxheight 1080 ve maksimum genişliği oluştu genişliği 1920.

enter image description here enter image description here

Edit2 ek bilgiler: aynı XAML 2 webcontrols var. Birden çok eklediğimde ve yeniden boyutlandırıldığında ... ilk saniyede çöktü.

Düzenleme (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 

Bazı meory sızıntı var burada geliyor bana.

2 GB israf edilmiş Ramdan sonra, düşüyor.

Kullanılan 8.5 GB Ram ile çalıştı, 10.5'e çıktı ve daha sonra çöktü.

Bu hatanın nedenini bulmak için bazı testler yaptım. Bunu her 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); 
     } 
    } 
tekrar beklendiği gibi çöktü

2, genişliği ve yüksekliği de penceresini yeniden boyutlandırmak olacağını bir döngü yarattı, ilginç i döngü

WebControl.Reload(true); 

de eklenir zaman, gerçi olduğunu aslında çökmedi ... Bellek 350 MB’den yukarı ve aşağı gidiyordu Yeniden boyutlandırılırken Rendering’i önlemek için zaten var mıdır?

+0

göç ​​etmektir Awesomium bir hata gibi görünüyor. Sorunun çoğaltılması ve hata izleyicisine gönderilmesi için çok minimal bir örnek oluştururdum. –

+0

Awesomium bir yıldan beri terk edilmiş gibi görünüyor. – Devian

+0

http://answers.awesomium.com/ adresindeki topluluk, canlı gibi görünüyor. Oraya yazmayı deneyebilirim. Yığın Taşma motorunun eski bir sürümüne benziyor. –

cevap

0

Yalnızca, denetiminiz tamamen başlatıldıktan ve görüntülendikten sonra yeniden boyutlandırabilirsiniz. IMHO bitmap sıfır boyutu veya geçersiz.

geçmişte Awesomium kullanılan, benim önerim CefSharp

https://cefsharp.github.io/

+0

Dürüst olmak gerekirse, Awesomium ile karşılaştığım birkaç sorundan 2 gün önce CefSharp'a taşındım. Ve şimdi oldukça mutluyum. Cefsharp'ın daha ağır olacağını düşündüm ama sadece iyi bir yük olarak görünüyor ve bu terk edilmiş projeden çok daha iyi bir şekilde optimize edilmiş durumda. Zaten zaman ayırdığınız için teşekkür ederim. – Devian