后台转换器应用程序占用太多内存

本文关键字:太多 内存 转换器 应用程序 后台 | 更新日期: 2023-09-27 17:56:03

我正在开发一个后台更改应用程序。该应用程序的一部分是带有3个图像预览(3个图像框)的幻灯片。上一个、当前和下一个图像。问题是每次计时器滴答时,应用程序都会占用大约 8 MB 的内存空间。我知道它最有可能是由图像绘制类引起的,但我不知道如何处理我不使用的图像。

更新:非常感谢。我需要稍微补充一下您提供的代码,但它现在可以工作了。当我在完全不同的对象上使用它之前尝试使用 dispose 方法时。谢谢。

它按以下顺序工作。

  1. 加载多个图像
    • 检索图像路径
  2. 设置更改图像的时间间隔
  3. 启动计时器
  4. 每次计时器滴答时,计时器执行以下操作

    pictureBoxCurr.BackgroundImage = Image.FromFile(_filenames.ElementAt(_currNum));
    pictureBoxPrev.BackgroundImage = Image.FromFile(_filenames.ElementAt(_currNum - 1));
    pictureBoxNext.BackgroundImage = Image.FromFile(_filenames.ElementAt(_currNum + 1));
    

每次显示新预览时,内存使用量需要另外 8MB 左右。我不知道究竟是什么占据了这个空间。

如果您知道导致问题的原因或有任何线索,请告诉我。

后台转换器应用程序占用太多内存

我建议在更改图像之前,在每个计时器滴答声中调用以下代码。

pictureBoxCurr.BackgroundImage.Dispose();
pictureBoxPrev.BackgroundImage.Dispose();
pictureBoxNext.BackgroundImage.Dispose();

这将立即释放非托管映像资源,而不是等待垃圾回收器。