Image.FormFile引起的若干问题(转)
1.文件正由另一进程使用,因此该进程无法访问该文件
问题描述:
this.pictureBox1.Image=Image.FormFile(sourceFile);
...
把sourceFile移动到另外一个文件夹
if(this.pictureBox1.Image!=null)
{
this.picutreBox1.Image.Dispose();
}
File.Copy(sourceFile,destinatFile);
File.Delete(sourceFile);
结果时不时的在File.Delete(sourceFile);处抛出异常:文件正由另一进程使用,因此该进程无法访问该文件。
把
File.Copy(sourceFile,destinatFile);
File.Delete(sourceFile);
换成:File.Move(sourceFile,destinatFile);问题依然如故。
问题应该在this.pictureBox1.Image=Image.FormFile(sourceFile);在msdn上Image.FromFile(string)
有这样的描述:在释放 Image 之前,此文件一直保持锁定。
解决办法:
Image img1=Image.FromFile(sourceFile);
Image img2=new Bitmap(img1);
img1.Dispose();
this.pictureBox1.Image=img2;
2.内存不足,或GDI+发生了一般性错误。
问题描述:在Image.FromFile(souceFile)出抛出System.OutOfMemoryException"内存不足"异常。
出现这种问题是由于souceFile文件被破坏,或者是空图片。
可以直接catch掉或在catch中做个标识。另外用
FileInfo fi=new FileInfo(souceFile);
if(fi.Length>0)
{
}
做个判断。
附:http://blog.csdn.net/Haliput/archive/2008/11/20/3339611.aspx,我尝试了该贴的情况
我直接执行Image img=Image.FromFile(Application.StartPath+“\\”+souceFileName);
则不会报异常,
我按照该帖作者的代码执行 :按Ctrl+F5执行,会报出该异常。如果我直接按F5调试执行者不会报该异常。
转自:http://www.cnblogs.com/shunliy/archive/2009/12/15/1624901.html
转自: