Diskuze: WPF - Image žere pamět
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
O using jsi někdy slyšel?
http://msdn.microsoft.com/…h598w02.aspx
Případně ručně volat Dispose().
nemám problém s using, dispose ale co bych měl takhle ošetřit?
System.Drawing.Bitmap b = gameMap.GetWaterImage();
BitmapSource bmSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(b.GetHbitmap(), IntPtr.Zero, System.Windows.Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
b.Dispose();
ale to neřeší problém a BitmapSource dispose nemá.
Bitmap není z WPF, ale z WF a protože nějak souvisí s GDI, musíš to mít v using. Raději bych použil něco přímo z WPF.
Jestli dobře vidím, tak tam vždy vytváříš novou bitmapu, nešlo by to nějak upravit na využívání té již vytvořené?
Je možné, že ten nárůst paměti se týká více míst, zkus to třeba ještě trochu projít.
Jinak ještě můžeš zkusit volat ručně GC.Collect(), pokud ti to připadá, že je GC trochu líný při uklízení paměti.
Vyřešeno chyba nebyla v bitmapě jako takové ale v Bitmap.GetHbitmap();
která děla kopii
mimo jiné řešeno tu http://stackoverflow.com/…-memory-leak
sdraco: jo přemýšlel jsem WriteableBitmap, InteroBitmap se tvářili jako to co bych mohl používat, až bude víc času tak se na ně mrknu, ale zatim mi u obou znich chyběla metoda na urovni setPixel -> resp změna konkrétního jednoho pixelu
Zobrazeno 6 zpráv z 6.