我正在研究一个改变背景的应用程序。部分应用程序是幻灯片,包含3个图像预览(3个图像框)。上一个,当前和下一个图像。问题是每次计时器滴答应用程序需要大约8 MB的内存空间。我知道它很可能是由图像绘制类引起的,但我不知道如何处理我没有使用的图像。
更新: 非常感谢。我需要调整你提供的代码,但它现在有效。当我在完全不同的对象上使用它之前尝试使用dispose方法时。 谢谢。
按以下顺序运作。
每个计时器勾选计时器执行以下操作
pictureBoxCurr.BackgroundImage = Image.FromFile(_filenames.ElementAt(_currNum));
pictureBoxPrev.BackgroundImage = Image.FromFile(_filenames.ElementAt(_currNum - 1));
pictureBoxNext.BackgroundImage = Image.FromFile(_filenames.ElementAt(_currNum + 1));
每次显示新的预览时,内存使用量都需要8MB左右。我不知道究竟是什么占据了那个空间。
如果您知道导致问题的原因或有任何线索,请告诉我。
答案 0 :(得分:1)
我建议在更改图像之前,在每个计时器刻度处调用以下代码。
pictureBoxCurr.BackgroundImage.Dispose();
pictureBoxPrev.BackgroundImage.Dispose();
pictureBoxNext.BackgroundImage.Dispose();
这将立即释放非托管图像资源,而不是等待垃圾收集器。