Vazamento de memória da câmera AForge
Estou desenvolvendo um aplicativo em C # e desenvolvi uma biblioteca que faz algumas coisas comAforge
câmeras. Um dos pontos é simplesmente capturar imagens do que está na frente da Web Cam e mostrá-lo em um específicoPictureBox
para fazer isso:
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;
}
O que eu faço aqui, eu pego cada quadro e pinto noPictureBox
.
Minha dúvida é:
Em alguns computadores, esse modo de pintura produz um vazamento de memória realmente alto. A configuração da câmera é:640x480e, se for mais alto, o vazamento de memória aumenta.
Configuração do computador:
Intel i5: vazamento de memória para 500Mb
Intel i7: SEM vazamento de memória.
Duplo coeur (não tão poderoso): Não há muito vazamento de memória.
EDITAR:
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;
}
Eu não entendo porque eu tenho vazamento de memória em alguns computadores e outros não ... Alguma sugestão por favor?
NOTA: Que vazamentos de memória só acontecem no modo Release no Visual Studio 2010, mas não na depuração.
NOTA 2: Eu acho que o problema vem com oFromBimapImage
porque eu tentei umWindowsForms
aplicação em vez de umWPF
um e nenhum vazamento de memória ...