处理后台线程中使用的位图
本文关键字:位图 后台 线程 处理 | 更新日期: 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语句。请参阅文档。