我是DotNet编程的新手。我遇到了一个严重的问题,但我不知道为什么。我已经使用了Dispose()
方法,但是仍然出现“内存不足”问题。大约在前30次,一切运行正常。然后,Out of memory
发生。此外,图像从13-16Mb。这是我的代码:
private void advanBtn_Click(object sender, EventArgs e)
{
InvertFunction();
}
private void InverFunction()
{
Bitmap bm = new Bitmap(imgBox.Image); // Out of memory
Image<Gray, byte> EmguImage = new Image<Gray, byte>(bm);
EmguImage = EmguImage.Not();
imgBox.Image.Dispose();
imgBox.Image = EmguImage.Bitmap;
bm.Dispose();
EmguImage.Dispose();
}
最佳答案
在他们的documentation中尝试该建议。
using (Bitmap bm = new Bitmap(imgBox.Image))
{
using (Image<Gray, Single> image = new Image<Gray, Single>(bm))
{
EmguImage = EmguImage.Not();
imgBox.Image.Dispose();
imgBox.Image = EmguImage.Bitmap;
}
}
作为最后的选择,您可以尝试强制垃圾回收。但是不建议这样做,只有在您没有其他方法时才应使用。
GC.Collect();
我建议您在使用here之前先阅读一下。