从资源

时间:2018-05-18 03:08:44

标签: winforms memory resources picturebox dispose

我的WinForm应用程序的目的是从特定文件夹中加载并显示一小段随机选择的图片。我是这样使用PictureBox这样做的(这行由随机数生成器调整以生成不同的数字文件名):

 pictureBox1.Image = Image.FromFile(@"C:\pics\1.png");

过了一会儿,它加载了不同的图像文件,但是看着诊断视图,我发现进程内存正在上升大约。每个图像加载1MB。大约100张图片后,即使图片被更换,尺寸也会增加100MB。其中一个控制显示持续时间的计时器包括我在这里尝试从资源中刷新图像的一些方法:

private void displayDuration(object sender, EventArgs e)
 {
  pictureBox1.Visible = false;
  pictureBox1.Image = null;
  pictureBox1.Invalidate();
  timer2.Enabled = false;
 }

但无济于事。内存不断增加,但Tick函数有效,因为将可见性设置为false就可以了。

如果我不再需要此图像,如何从内存中正确刷新此图像?

我试图不包含ImageList,但如果您认为它可以解决此内存问题,我可以将其添加进来。

1 个答案:

答案 0 :(得分:0)

先生。 Reza Aghaei是正确的,Dispose()可以解决这个问题,我只是用错了:

pictureBox1.Dispose();

刚破坏了pictureBox。在pictureBox中处理图像是正确的方法:

pictureBox1.Image.Dispose();

我不应该这么早就放弃这种方法。非常感谢你。