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 に答える