C# 后台转换器应用程序占用太多内存
我正在开发一个改变背景的应用程序。该应用程序的一部分是一个幻灯片,其中包含3个图像预览(3个图像框)。上一个、当前和下一个图像。问题是,每次定时器滴答作响时,应用程序都会占用大约8MB的内存空间。我知道这很可能是由图像绘制类引起的,但我不知道如何处理我没有使用的图像 更新: 非常感谢你。我需要调整一下您提供的代码,但它现在可以工作了。当我在完全不同的对象上使用dispose方法之前尝试使用它时。 多谢各位 它按以下顺序工作C# 后台转换器应用程序占用太多内存,c#,image,memory,background,slideshow,C#,Image,Memory,Background,Slideshow,我正在开发一个改变背景的应用程序。该应用程序的一部分是一个幻灯片,其中包含3个图像预览(3个图像框)。上一个、当前和下一个图像。问题是,每次定时器滴答作响时,应用程序都会占用大约8MB的内存空间。我知道这很可能是由图像绘制类引起的,但我不知道如何处理我没有使用的图像 更新: 非常感谢你。我需要调整一下您提供的代码,但它现在可以工作了。当我在完全不同的对象上使用dispose方法之前尝试使用它时。 多谢各位 它按以下顺序工作 加载多个图像 检索图像路径 设置更改图像的时间间隔 启动计时器 在每
- 检索图像路径
pictureBoxCurr.BackgroundImage = Image.FromFile(_filenames.ElementAt(_currNum));
pictureBoxPrev.BackgroundImage = Image.FromFile(_filenames.ElementAt(_currNum - 1));
pictureBoxNext.BackgroundImage = Image.FromFile(_filenames.ElementAt(_currNum + 1));
如果您知道导致问题的原因或有任何线索,请告诉我。我建议在更改图像之前,在每个计时器计时点调用以下代码
pictureBoxCurr.BackgroundImage.Dispose();
pictureBoxPrev.BackgroundImage.Dispose();
pictureBoxNext.BackgroundImage.Dispose();
这将立即释放非托管映像资源,而不是等待垃圾收集器。已尝试。我得到以下异常对象引用未设置为对象的实例。在处理之前,请检查每个图像是否为空。如果为空,则不要处理。它已工作。我只需要稍微调整一下。非常感谢你。