【问题标题】:Picture Box out of Memory图片框内存不足
【发布时间】:2011-08-09 12:53:13
【问题描述】:

我正在开发一个 Windows 窗体应用程序。在我的一个表单中,我放置了一个图片框控件。 它在大部分时间都可以正常工作。但有时它会显示红十字而不是显示实际图片。

我对此进行了进一步探索,并了解到该控件在内部处理异常。所以我去Debug->Exceptions 并检查相关的thrown 框。然后我发现由于以下错误而显示红色框:

A first chance exception of type 'System.OutOfMemoryException' occurred in System.Drawing.dll

Additional information: Out of memory.

有没有人可以建议我如何处理这个异常?

【问题讨论】:

  • 您是否将图片框重新用于多个图像?如果是这样,您是否在加载下一张图片之前处理了上一张图片?
  • 检查您是否在某处陷入无限循环。检查图片的大小是否不是 1gb 之类的。检查您的计算机是否真的很旧并且内存不足。
  • 您可能需要为某人添加一些代码才能给您一个可靠的答案。
  • @Jason Down:正是我将它用于多个图像。请告诉我如何处理以前的图像?

标签: c# winforms


【解决方案1】:

由于您评论说您在PictureBox 中使用了多个图像,您应该在应用新图像之前“像@Jason 建议的那样”处理旧图像,例如:

private void ChangePictureBoxImage(Image image)
{
    pictureBox.Image.Dispose();//dispose the old image.

    pictureBox.Image = image;
}

【讨论】:

  • 拯救了我的一天 :) 谢谢。
  • 对我来说,不幸的是这不起作用......我在图片框中看不到任何东西。我的解决方案是将当前图像保存到变量中,设置新图像,然后处理保存的图像。
【解决方案2】:

您的目标机器有多少 RAM?

您收到此异常是因为为图像分配更多内存的调用失败。如果您无法增加计算机上的内存量,请尝试减小图像大小或关闭您正在运行的任何其他程序。

【讨论】:

  • 真的有人认为他的 RAM/虚拟内存不足的可能性很小吗?
  • 这就是异常的意思......正如您在上面接受的答案中看到的那样,他确实内存不足。
  • 与内存无关。当当前地址总线中没有足够的内存时会引发此错误 - 这是一个完全不同的概念。
猜你喜欢
  • 2011-01-27
  • 2013-04-05
  • 2014-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多