AForge утечка памяти камеры
Я разрабатываю приложение на C #, и я разработал библиотеку, которая делает некоторые вещи сAforge
камеры. Одним из пунктов является просто захватить изображения того, что находится перед веб-камерой и показать его на определенномPictureBox
сделать так:
camera.NewFrame += NewFrame;
private void NewFrame(object sender, NewFrameEventArgs args)
{
Bitmap newFrame = new Bitmap(args.Frame);
args.Frame.Dispose();
PictureBox.FromBitmapImage(newFrame);
newFrame.Dispose();
newFrame = null;
}
Что я делаю здесь, я получаю каждый кадр и рисую его вPictureBox
.
Мое сомнение:
В некоторых компьютерах такой способ рисования приводит к очень большой утечке памяти. Конфигурация камеры:640х480и, если оно выше, утечка памяти увеличивается.
Конфигурация компьютера:
Intel i5: утечка памяти до 500Мб
Intel i7: НЕТ утечки памяти.
Двойной коэффициент (не такой мощный): Не так много утечки памяти.
РЕДАКТИРОВАТЬ:
public static void FromBitmapImage(this Image image, Bitmap bitmap)
{
BitmapImage bitmapImage = new BitmapImage();
using (MemoryStream memoryStream = new MemoryStream())
{
bitmap.Save(memoryStream, ImageFormat.Bmp);
memoryStream.Position = 0;
bitmapImage.BeginInit();
bitmapImage.StreamSource = memoryStream;
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.EndInit();
}
image.Source = bitmapImage;
bitmapImage = null;
}
Я не понимаю, почему у меня утечка памяти на некоторых компьютерах, а на других нет ... Любое предложение, пожалуйста?
НОТА: Утечки памяти происходят только в режиме выпуска в Visual Studio 2010, но не при отладке.
ЗАМЕТКА 2: Я думаю, что проблема связана сFromBimapImage
потому что я попробовалWindowsForms
приложение вместоWPF
одна и нет утечки памяти ...