问题描述:创建两个窗体Form1,Form2。在Form2上放置Picturebox控件,在本地磁盘上读取一张图片在该控件上显示。
当Form2退出时(或者是退出后也可以),实现删除图片功能。这时Form1并没有推出,提示错误该文件正被某个进程使用,无法访问。奇怪的是有时候却能够删除。窗体Form2退出时,已经释放了全部资源。

解决方案 »

  1.   

    你是不是用到 Picturebox.Image=Image.FromFile(..)?
    这样的话是有些问题.
    建议将图片读入到MemoryStream中,然后
    Image DamImg = Image.FromStream(ms);
    Picturebox.Image = DamImg;
    显示在 Picturebox 中,这样退出应该就没问题了
      

  2.   

    将该图片以流的方式加载进来,然后再赋给Picturebox
    Image.FromStream(ByteToStream(SetImageToByteArray(ImageUrl)));
            public byte[] SetImageToByteArray(string fileName)
            {
                byte[] image = null;
                try
                {
                    FileStream fs = new FileStream(fileName, FileMode.Open);
                    FileInfo fileInfo = new FileInfo(fileName);
                    int streamLength = (int)fs.Length;
                    image = new byte[streamLength];
                    fs.Read(image, 0, streamLength);
                    fs.Close();
                    return image;
                }
                catch
                {
                    return image;
                }
            }
            public MemoryStream ByteToStream(byte[] mybyte)
            {
                MemoryStream mymemorystream = new MemoryStream(mybyte, 0, mybyte.Length);
                return mymemorystream;
            }
            public Image SetByteToImage(byte[] mybyte)
            {
                Image image;
                MemoryStream mymemorystream = new MemoryStream(mybyte, 0, mybyte.Length);
                image = Image.FromStream(mymemorystream);
                return image;
            }