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.

请帮帮我!

4

2 回答 2

1

参考这个答案 https://stackoverflow.com/a/1025446/988830

该文件被另一个进程使用,您必须确保拥有该文件的进程已释放它。如果它不在您的控制范围内,那么您需要尝试 catch 块以避免异常,并且您不能做更多的事情。

try
{
    //Delete file
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message.ToString());
}
于 2012-05-12T02:30:33.540 回答
0

在删除图像之前,您是否查看过这些图像的使用情况?

当您没有注意到时,您的 WPF 应用程序的其他部分可能会锁定它们,

WPF中的BitmapImage确实锁定文件

于 2012-05-12T13:33:23.320 回答