我需要知道如何正确处理Bitmaps,以便我没有内存泄漏。 我在BackgroundWorker中抓取视频并将其分配给PictureBox:
private void bwVideo_ReadCamera(object sender, DoWorkEventArgs e)
{
Bitmap temp = null;
while (true)
{
Image<Bgr, Byte> frame = logitec.QueryFrame();
if (temp != null)
temp.Dispose();
temp = frame.ToBitmap();
pictureBox2.Image = temp;
}
}
问题是我仍然使用此代码获得“Out of Memory Exception”。我试过通过使用BackgroundWorker ReportProgress释放pictureBox2.Image变量并在上面的代码中等待dispose完成(你需要与gui同步来调用PictureBox图像上的dispose)。我还尝试使用Image类的“Bitmap”属性,它在Image和Bitmap之间共享数据。
所以我的问题是,在这种情况下,处理我的形象的正确方法是什么?