can you try
private void TheTimer_Tick(object sender, System.EventArgs e)
{
Random r = new Random();
int nIndex = r.Next( sImageFiles.Length ); 

Image oImage = Image.FromFile( sImageFiles[nIndex] );         if (this.ThePictureBox.Image != null)
            this.ThePictureBox.Image.Dispose(); this.ThePictureBox.Image = oImage; //oImage.Dispose(); // A1
//oImage = null; // A2
}

解决方案 »

  1.   

    我也写了一个类似的程序,不需要自己手动去Dispose();
    的确很耗内存,但是在消耗30M左右时就释放了,内存可用数变化在180M到210M之间,没有出现内存耗尽的情况(我的是512的内存,Win2000Pro,Vs.Net2003)  数组里有52个文件
    private void button1_Click(object sender, System.EventArgs e)
    {
    if(this.openFileDialog1.ShowDialog()==DialogResult.OK)
    {
    this.filePaths=this.openFileDialog1.FileNames;
    this.timer1.Interval = 100;
    this.timer1.Enabled = true; 
    }
    } private void timer1_Tick(object sender, System.EventArgs e)
    {
    Random r = new Random();
    int nIndex = r.Next( filePaths.Length ); 

    Image oImage = Image.FromFile( filePaths[nIndex] ); this.pictureBox1.Image = oImage; }这是我的全部代码
      

  2.   

    好像和this.timer1.Interval = 100;
    有关系
    我设置成1000时,的确出现了不释放内存的问题!:(不过通过思归大哥的方法可以解决
    学习ing