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调试执行者不会报该异常。

原文地址:https://www.cnblogs.com/shunliy/p/1624901.html