我是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之前先阅读一下。

10-08 04:55