string strPath=Application.StartupPath+"\\Picture\\070547.jpg"; 
private void Form1_Load(object sender, System.EventArgs e)

FileStream fs = new FileStream(strPath,FileMode.Open, FileAccess.Read);
Image img = Image.FromStream(fs);
PictureBox1.Image=img;
fs.Close();
}
双击PictureBox1中的图片,把图片显示在PictureBox2中.
private void PictureBox1_DoubleClick(object sender, System.EventArgs e)
{
FileStream fs = new FileStream(strPath,FileMode.Open, FileAccess.Read);
Image img = Image.FromStream( fs );
PictureBox2.Image=breviaryPicture(strPath);
fs.Close();
}
问题:我不停地双击,内存不断的增加,内存好像没有释放,为什么,怎么释放掉?

解决方案 »

  1.   

    Image img = Image.FromStream( fs );
    可能是这一行的Image没有释放,等着回收呢
      

  2.   

    你的"breviaryPicture(strPath);"这句是干什么操作,是不是这里有什么没释放。
      

  3.   

    写错了,PictureBox2.Image=breviaryPicture(strPath);这个是PictureBox2.Image=img;
      

  4.   

    Have a tryFileStream fs = new FileStream(strPath,FileMode.Open, FileAccess.Read);
    Image img = Image.FromStream( fs );
    PictureBox2.Image = null;
    PictureBox2.Image = img ;
    fs.Close();
    GC.Collect();//Call system to collect garbage
      

  5.   

    任何关于图片的处理请调用GC或者Dispose方法,强行释放未引用的内存。
      

  6.   

    using(FileStream fs = new FileStream(strPath,FileMode.Open, FileAccess.Read))
    {
       Image img = Image.FromStream(fs);
       PictureBox1.Image=img;
       fs.Close();
    }
      

  7.   

    private void Form1_Load(object sender, System.EventArgs e)

    FileStream fs = new FileStream(strPath,FileMode.Open, FileAccess.Read);
    Image img = Image.FromStream(fs);
    PictureBox1.Image=img;
    fs.Close();
    }
    双击PictureBox1中的图片,把图片显示在PictureBox2中.
    private void PictureBox1_DoubleClick(object sender, System.EventArgs e)
    {
    FileStream fs = new FileStream(strPath,FileMode.Open, FileAccess.Read);
    Image img = Image.FromStream( fs );
    PictureBox2.Image=breviaryPicture(strPath);fs.Close();**************
    img.Dispose();
    **************
    }
    不知道行不行,你可以试试
      

  8.   

    Have a tryFileStream fs = new FileStream(strPath,FileMode.Open, FileAccess.Read);
    Image img = Image.FromStream( fs );
    if( PictureBox2.Image != null )
    {
       Image imgTemp = PictureBox2.Image;
       PictureBox2.Image = null;
       imgTemp.Dispose();
    }
    PictureBox2.Image = img ;
    fs.Close();
      

  9.   

    这个不太好处理,还是实现IDispose接口吧
      

  10.   

    垃圾回收是没有人可以去控制的,这是在。NET低层去做的事情,只有不得以了才会去释放
      

  11.   

    一定要用filestream么
    我是这么写的,试了试没什么问题啊Image myImageLayout=Image.FromFile(@"image\LAYOUT\yun_2502.jpg");
    myPictureBox.Image=myImageLayout;
      

  12.   

    GC会损失性能力
    Idispose说白了就是fs=null;其实这个你不用去管,,,比如你的程序装在64M内存的机器上,clr早就去给你GC了,,,你的机器有512M,clr可能就不会管了