2010-11-29 78 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

非常感謝您的幫助和抱歉,在我剛看到它的代碼錯誤,我原來的代碼就像是爲你寫的,但我不知道也許當我不小心貼我已經把這樣的。當應用程序運行時有一個顯示每個記錄圖像的圖片框,這就是爲什麼當我想更改圖片時應用程序發生異常,因爲它已經被圖片框使用過一次,但是我也嘗試過在刪除原始圖片之前將另一張圖片加載到圖片框中,但仍然是相同的。我已經修改了上面的可能,如果你想檢查它

相關問題