2010-11-29 131 views
2

我开发了一个C#应用程序,在应用程序中用户为每条记录选择一张照片。但是,用户也应该能够使用较新的照片更改预选照片。当用户更改照片时,应用程序首先从应用程序目录中删除旧照片,然后复制新照片,但是当应用程序执行该操作时会发出异常,因为应用程序使用该文件,因此应用程序不能删除运行。有没有人有一个线索如何解决这个问题? 我感谢你的帮助如何在应用程序运行时删除文件

这是例外

该进程无法访问该文件 “d:\我的 项目\ Hawkar'sProject \ SOFTWARE \应用\ BIN \调试\照片\ John Smith.png',因为它正在被另一个进程 使用。

//defining a string where contains the file source path 
      string fileSource = Open.FileName; 

      //defining a string where it contains the file name 
      string fileName = personNameTextBox.Text + ".png" ; 

      //defining a string which specifies the directory of the destination file 
      string fileDest = dir + @"\Photos\" + fileName; 

      if (File.Exists(fileDest)) 
      { 

       File.Delete(fileDest); 
       //this is a picturebox for showing the images 
       pbxPersonal.Image = Image.FromFile(dir + @"\Photos\" + "No Image.gif"); 
       File.Copy(fileSource, fileDest); 
      } 
      else 
      { 
       File.Copy(fileSource, fileDest); 

      } 
      imageIDTextBox.Text = fileDest; 
+0

“嗨男装” - 可能不仅有男性在看> ;-) – smirkingman 2010-11-30 13:51:54

回答

3

首先,你的代码是不好的。 只有当前没有图像(其他)时,才会复制新图像。 但是,如果存在旧图像,则只能删除此图像,但不要复制较新的图像(如果)。

代码应更好的是这样的:

if (File.Exists(fileDest)) 
{ 
    File.Delete(fileDest); 
} 

File.Copy(fileSource, fileDest); 
imageIDTextBox.Text = fileDest; 

此代码应工作,但如果你得到一个例外,该文件已在使用,你应该检查“其中”您使用的文件。也许你正在程序开始时阅读文件。如果有一些手柄处于打开状态,请检查您正在访问这些用户文件的程序的所有部分。

0

非常感谢您的帮助和抱歉,在我刚看到它的代码错误,我原来的代码就像是为你写的,但我不知道也许当我不小心贴我已经把这样的。当应用程序运行时有一个显示每个记录图像的图片框,这就是为什么当我想更改图片时应用程序发生异常,因为它已经被图片框使用过一次,但是我也尝试过在删除原始图片之前将另一张图片加载到图片框中,但仍然是相同的。我已经修改了上面的可能,如果你想检查它

相关问题