我是谁712 发表于 2015-9-27 01:22:50

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的。
后来打开任务管理器发现每秒钟内存都会增加,这是因为每秒钟都把图片读到内存里面了的原因吗?求高手解答

destiny、 发表于 2015-9-27 08:42:44

图片管理用ImageList控件吧、PictureBox属性里面有图片清除的话每次更新前清除一遍试试、没用过不太清楚、、、

cnxh 发表于 2015-9-27 09:10:37

加Dispose方法试试,pictureBox1.Image.Dispose

我是谁712 发表于 2015-9-27 10:58:06

destiny、 发表于 2015-9-27 08:42
图片管理用ImageList控件吧、PictureBox属性里面有图片清除的话每次更新前清除一遍试试、没用过不太清楚、 ...

嗯,ImageList还没用过,用了楼下的方法,pictureBox1.Image.Dispose();但是这个函数好像不能单独用,后面加一句pictureBox1.Image=null;就可以了

我是谁712 发表于 2015-9-27 11:02:00

cnxh 发表于 2015-9-27 09:10
加Dispose方法试试,pictureBox1.Image.Dispose

谢谢你的建议,在tick里面图片显示之前加了这句话就可以了{:lol:}

我是谁712 发表于 2015-9-27 11:03:47

我是谁712 发表于 2015-9-27 10:58
嗯,ImageList还没用过,用了楼下的方法,pictureBox1.Image.Dispose();但是这个函数好像不能单独用,后 ...

把pictureBox1.Image.Dispose();放在最前面就可以了,好像是释放资源后要给pictureBox1.Image赋值,不然会抛异常
页: [1]
查看完整版本: c#中Timer里面让pictureBox里面的图片改变导致占内存不断增加