2015-11-23 9 views
7

まあ、私は奇妙なバグに気付きました。これはサイズ変更時に発生します。Awesomium.NETサイズ変更時にクラッシュする - メモリリーク

私はxamlアライメントを修正しようとしていましたが、最初に気付きました。私が 私の2画面でウィンドウをリサイズしようとすると、awesomiumのコンテンツがちらつき始めて突然コンテンツが消えてしまい、vshost32.exe の直後にロゴ付きの赤い画面が表示されました。

私はよく考えました。それは幅の限界があるかもしれないので、私は主画面の幅でウィンドウのMaxWidthを制限しました。私は水平方向にサイズを変更しようとしたときに、いくつかのflickeringsがaswell気づいたが、私はサイズ変更をスパムと何度の高さを変更したときには、しかし、すべてだったと同じ問題がのmaxHeight 1080と最大幅に発生した幅1920

enter image description here enter image description here

EDIT2追加情報: 私は同じXAMLの2つのWebBrowserコントロールを持っています。 複数を追加してサイズを変更すると... 最初の1秒がクラッシュしました。

編集(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 

いくつかのmeory漏れがここにありますように私には思えます。

2 GBのWasted Ramの後、クラッシュします。

使用した8.5 GBのRAMで試し、10.5まで行ってからクラッシュしました。

私はこのエラーの原因を見つけるためにいくつかのテストを行いました。 私はそれが50ms毎

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); 
     } 
    } 
それが再び期待通りに墜落した

2つの幅と高さでウィンドウのサイズを変更することをループを作成し、興味深いのは、私がループ

WebControl.Reload(true); 

に付加したときにということ、しかしであります実際にはクラッシュしませんでした...メモリは350 MBから上下に移動しました

サイズ変更中にレンダリングを防止する方法はありますか?

+0

に移行することで、過去にAwesomiumを使用。私はreproが問題を抱えてバグトラッカーに提出する、非常に最小限の例を作成したいと思います。 –

+0

Awesomiumが今年のように放棄されたようです。 – Devian

+0

http://answers.awesomium.com/のコミュニティは活気があるようです。私はそこに投稿しようとします。スタックオーバーフローエンジンの古いバージョンのようです。 –

答えて

0

コントロールが完全に初期化されて表示された後でなければサイズを変更できないと考えます。 IMHOビットマップ

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/

+0

正直言って、私はAwesomiumに直面したいくつかの問題の後、2日前にCefSharpに移行しました。そして、私は今とても幸せです。私はcefsharpがより重くなると思ったが、それはうまくいくように見え、この放棄されたプロジェクトよりも最適化されている。とにかくお時間をありがとう。 – Devian

関連する問題