Мне нужно нарисовать пиксель за пикселем и отобразить его внутри WPF. Я пытаюсь сделать это, используя System.Drawing.Bitmap
, затем используя CreateBitmapSourceFromHBitmap()
, чтобы создать BitmapSource
для управления изображением WPF. У меня есть утечка памяти где-то, потому что, когда вызывается CreateBitmapSourceFromBitmap()
, использование памяти увеличивается и не уходит, пока приложение не закончится. Если я не звоню CreateBitmapSourceFromBitmap()
, заметных изменений в использовании памяти не наблюдается.WPF CreateBitmapSourceFromHBitmap() утечка памяти
for (int i = 0; i < 100; i++)
{
var bmp = new System.Drawing.Bitmap(1000, 1000);
var source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
bmp.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
source = null;
bmp.Dispose();
bmp = null;
}
Что я могу сделать, чтобы освободить память BitmapSource
?
Это работает. После теста осталось немного остаточной памяти, но сборщик мусора забирает его. Спасибо, Жюльен. –
Фантастический. Застрял между сторонней библиотекой и жестким местом. Это усугубляло это. –
Вот ссылка на статью MSDN Bitmap.GetHBitmap, где @JulienLebosquain цитирует с http://msdn.microsoft.com/en-us/library/1dz311e4.aspx – Zack