处理后台线程中使用的位图

本文关键字:位图 后台 线程 处理 | 更新日期: 2023-09-27 18:00:37

我需要知道如何正确处理位图,这样我就不会出现内存泄漏。我正在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;
   }
}

问题是,我仍然会收到这段代码的"内存不足异常"。我已经尝试使用BackgroundWorker ReportProgress释放pictureBox2.Image变量,并在上面的代码中等待dispose完成(您需要与gui同步才能对PictureBox映像调用dispose)。我还尝试使用Image类的"Bitmap"属性,该属性在Image和Bitmap之间共享数据。

所以我的问题是,在这种情况下,处理我的形象的正确方法是什么?

处理后台线程中使用的位图

您的Image<Bgr, Byte>声明可能应该有一个using语句。请参阅文档。