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

ファイルが別のプロセスによって使用されて参照してください、あなたは、ファイルを保持しているプロセスがそれをリリースしたことを確認する必要があります。それがあなたのコントロールにない場合、あなたは例外を避けるためにブロックをキャッチしようとする必要があり、それ以上のことはできません。

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

あなたの答えをコンソールに伝えようとしてくれてありがとうございましたが、Skypeでユーザー名とパスワードを訂正してログインするとどうして削除できないのですか? 私にとってはわかりませんが、DisContcherTimer()をMainWindowsで使用して5秒以内に連絡ループを照会するためだと思います。 DsspatcherTimerでその写真を削除すると問題が生じる可能性があります。 このプロセスについてどう思いますか? SkypeランタイムやDispactureTimerの削除時の問題? – user1379210

0

イメージを削除する前に、そのイメージの使用状況を確認しましたか?あなたが気づかないときにそれらをロックして、あなたのWPFアプリの

他の部分、

BitmapImage in WPF does lock file