2012-05-12 137 views
1

我有我的應用程序中刪除圖片的疑難解答,我用foreach刪除文件夾中的文件。刪除我的應用程序文件夾中的照片

我在我的應用程序中使用了無頭的Skype登錄,查詢聯繫人姓名和聯繫人的照片登錄成功後,但我有問題,當我關閉我的應用程序時,我想刪除我應用程序文件夾中的所有聯繫人照片。查看要刪除的代碼:

var assemblyLocation = Assembly.GetExecutingAssembly().Location; 
var applicationDirectory = System.IO.Path.GetDirectoryName(assemblyLocation); 
var imagesDirectory = System.IO.Path.Combine(applicationDirectory, "img"); 
var contact_photo = Directory.EnumerateFiles(imagesDirectory, 
    "*.jpg",SearchOption.TopDirectoryOnly); 
if (contact_photo != null) 
{ 
    foreach (var photo in contact_photo) 
    { 
     Console.WriteLine(photo); 

     File.Delete(photo); 
    } 

}

錯誤消息:

The process cannot access the file 'C:\Users\...\mypicture.jpg' 
because it is being used by another process. 

請幫助我!

+2

確保您要刪除 –

+0

注意你殺了應用程序的所有進程,因爲它仍然在使用該圖片對於正常安裝的應用程序,您不具有對其文件夾的寫入權限。 – Joey

回答

1

參考此答案https://stackoverflow.com/a/1025446/988830

該文件是由另一個進程使用,你必須確保它有存放文件的過程中已經發布了它。如果它不在你的控制範圍內,那麼你需要嘗試catch塊來避免異常,你不能做的不止於此。

try 
{ 
    //Delete file 
} 
catch (Exception ex) 
{ 
    Console.WriteLine(ex.Message.ToString()); 
} 
+0

感謝您的回答,當我嘗試按照您的控制檯中的錯誤顯示時,但我不確切地知道,爲什麼我無法刪除當我在Skype中登錄更正的用戶名和密碼。 對我來說我不確定,但我想因爲我在MainWindows中使用DispatcherTimer()來查詢5秒鐘內的聯繫循環。因此,當進程刪除該照片時,DsspatcherTimer可能會出現問題。 您如何看待這個過程?刪除時Skype運行時問題或DispactureTimer問題? 任何想法請求! – user1379210

0

在刪除圖像之前,您是否檢查過使用這些圖像?

您的WPF應用程序可以鎖定他們,當你沒有注意到的其他部分,

BitmapImage in WPF does lock file

相關問題