2012-05-12 90 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

相关问题