日期:2014-05-17  浏览次数:20817 次

在picturebox显示一张图片,然后dispose还是删不了,说图片被进程使用,请问要删图片如何关闭进程
在picturebox显示一张图片,然后dispose还是删不了,说图片被进程使用,请问要删图片,知道这张图片的名字如何关闭使用这张图片的进程

------解决方案--------------------
你PictureBox里还使用着这张图片呢,你怎么能删除,当然又处于被独占状态。

先将PictureBox控件里图片清空,然后才可以删除的。
------解决方案--------------------
做一个项目的时候,用到了图片的操作,当用Picturebox显示图片时是用的


Image.FromFile(ImageRul);这个方法来显示图片的,

如果这时想把图片给删除的话,会报错,提示该图片正在使用中,

后来找到一个方法,就是将该图片以流的方式加载进来,然后在赋给Picturebox,这样不存在删除的时候报错了。

调用的时候用:

Image.FromStream(ByteToStream(SetImageToByteArray(ImageUrl)));

下面是封装好的方法:



#region 将文件转换成流
        //public byte[] SetImageToByteArray(string fileName, ref string fileSize)
        /// <summary>
        /// 将文件转换成流
        /// </summary>
        /// <param name="fileName">文件全路径</param>
        /// <returns></returns>
        public byte[] SetImageToByteArray(string fileName)
        {
            byte[] image = null;
            try
            {
                FileStream fs = new FileStream(fileName, FileMode.Open);
                FileInfo fileInfo = new FileInfo(fileName);
                //fileSize = Convert.ToDecimal(fileInfo.Length / 1024).ToString("f2") + " K";
                int streamLength = (int)fs.Length;
                image = new byte[streamLength];
                fs.Read(image, 0, streamLength);
                fs.Close();
                return image;
            }
 &nbs