c#中Timer里面让pictureBox里面的图片改变导致占内存不断增加
小弟最近在学c#,做个练习让窗体中的6个pictureBox中的图片每秒随机变化一次。private void timer1_Tick(object sender, EventArgs e)
{
//每隔一秒钟换一张图片
i++;
if (i == path.Length)
{
i = 0;
}
//加上下面这这几句后,应用程序占用的内存会越来越大,,,知道内存用完,,,原因暂时还不知道
pictureBox1.Image = Image.FromFile(path);
pictureBox2.Image = Image.FromFile(path);
pictureBox3.Image = Image.FromFile(path);
pictureBox4.Image = Image.FromFile(path);
pictureBox5.Image = Image.FromFile(path);
pictureBox6.Image = Image.FromFile(path);
}
程序运行一段时间之后居然提示我内存不够了,我内存是8G的。
后来打开任务管理器发现每秒钟内存都会增加,这是因为每秒钟都把图片读到内存里面了的原因吗?求高手解答 图片管理用ImageList控件吧、PictureBox属性里面有图片清除的话每次更新前清除一遍试试、没用过不太清楚、、、 加Dispose方法试试,pictureBox1.Image.Dispose destiny、 发表于 2015-9-27 08:42
图片管理用ImageList控件吧、PictureBox属性里面有图片清除的话每次更新前清除一遍试试、没用过不太清楚、 ...
嗯,ImageList还没用过,用了楼下的方法,pictureBox1.Image.Dispose();但是这个函数好像不能单独用,后面加一句pictureBox1.Image=null;就可以了 cnxh 发表于 2015-9-27 09:10
加Dispose方法试试,pictureBox1.Image.Dispose
谢谢你的建议,在tick里面图片显示之前加了这句话就可以了{:lol:} 我是谁712 发表于 2015-9-27 10:58
嗯,ImageList还没用过,用了楼下的方法,pictureBox1.Image.Dispose();但是这个函数好像不能单独用,后 ...
把pictureBox1.Image.Dispose();放在最前面就可以了,好像是释放资源后要给pictureBox1.Image赋值,不然会抛异常
页:
[1]