gpt4 book ai didi

c# - 在不丢失 pictureBox 的情况下处理 pictureBox 图像

转载 作者:行者123 更新时间:2023-11-30 19:24:11 29 4
gpt4 key购买 nike

我正在编写一个可以播放幻灯片(以及其他内容)的程序。幻灯片由 backgroundWorker 控制,并设置为 while(true) 循环,因此它将不断播放图像。我的问题是我不确定如何处理旧图像以免它们占用内存(一段时间后程序会抛出“内存不足异常”)。如果我调用 horPicBox.Image.Dispose() 那么它之后根本不会让我使用图片框。

有没有办法从内存中释放旧图像??如果我查看 VS 中的诊断工具,每次图像更改时内存都会增加...... enter image description here

注意:ImagePaths 是幻灯片图像的文件路径列表。

这是 backgroundWorker 运行的代码:

private void PlayImages()
{
Random r = new Random();
int index;
Stopwatch watch = new Stopwatch();

while (true)
{
index = r.Next(imagePaths.Count);
horPicBox.Image = Image.FromFile(imagePaths[index]);

watch.Start();

while (watch.ElapsedMilliseconds < 5000)
{

}

watch.Stop();
watch.Reset();

//picWorker.ReportProgress(0);
}
}

我可以向 UI 线程报告 progressChanged,但我不确定我需要从 UI 线程(如果有的话)做什么来释放旧图像。提前致谢!!

最佳答案

如果您将图像存储到该类型的变量中,然后设置您的图片框图像,然后像处理旧图像一样处理

       Image oldImage = horPicBox.Image;
horPicBox.Image = Image.FromFile(imagePaths[index]);
oldImage.Dispose();

关于c# - 在不丢失 pictureBox 的情况下处理 pictureBox 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39439942/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com