我正在写一个简单的图像调整大小的程序。通过将多个文件拖放到.exe上,它会通过并调整每个文件的大小。它可以运行到一个特定的点,在这个点上抛出一个OOM(内存不足)异常。我试过在位图上调用Dispose,并将其设置为Null,但似乎都没有做任何事情。如何从C#中的对象重用相同的内存? (特别是位图)
Bitmap current_image;
for (int i = 0; i < imagesfilepath.Count; ++i)
{
// Load the image.
if (current_image != Null)
{
current_image.Dispose();
current_image = Null;
}
current_image = (Bitmap)Image.FromFile(imagesfilepath[i], true);
// Resize it.
// Save it.
}
使用1.5 GB后通常会抛出异常。我可以通过限制用户一次可以调整大小的图像数量来解决此问题,但不应该只能为1位图分配内存,并在每次迭代中重新使用它?
可以显示代码以保存以及如何尝试释放资源吗? – BrokenGlass 2012-02-11 03:04:19
我想我们真的需要在这里看到更多的代码。从你在那里,你不应该遇到这种例外。 – 2012-02-11 03:25:00