我的问题是无法或不知道如何清除内存中被不再使用的图像(位图)淹没的内容。该函数的目的是每隔x秒将表单的背景更改为一个新图像。
内存使用将不可避免地溢出,它将崩溃。但即使当我改变到一个不同的窗口,我运行this. close()和内存使用仍然不断增加。
函数如下:
public async void WaitSomeTime(String[] favs, int time)
{
while (true)
{
var rnd = new Random();
favs = favs.OrderBy(item => rnd.Next()).ToArray();
foreach (string fav in favs)
{
await Task.Delay(time);
Image img = new Bitmap(fav);
this.pictureBoxBG.Image = img;
}
}
}
到目前为止,我已经尝试了Dispose方法,但没有效果,我不完全理解它。我已经尝试了'using'语句,但这导致了Program.cs(入口点)中的错误。我确信这是一个简单的修复,但我没有主意,GPT3也没有很好的帮助,提前感谢。
1条答案
按热度按时间jgzswidk1#
使用Visual Studio中的诊断工具,我们可以了解当前代码在大约5分钟的时间内相对于进程内存的行为。更新设置为每秒大约10次,以提供测试负载。尽管我用于测试的图像文件不是很大,但对内存消耗的影响是明显的。
你可以尝试的一种方法是显式地处理图像,然后收集垃圾,在每个完整的favs列表中应用这个似乎是合理的,但是你会得到一般的漂移,可以在你选择的任何地方应用它。