2012-05-12 2 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에서 수정 된 사용자 이름과 암호로 로그인 할 때 삭제할 수없는 이유를 정확하게 알지 못합니다. 나를 위해 잘 모르겠지만, DisintercherTimer()를 사용하여 MainWindows에서 5 초 내에 연락처 루프를 쿼리하기 때문에 생각합니다. DsspatcherTimer에 문제가있어 처리 할 때 그 사진을 삭제할 수 있습니다. 이 프로세스에 대해 어떻게 생각합니까? 삭제시 Skype 런타임 또는 DispactureTimer에 문제가 있습니까? 어떤 아이디어가 탄원합니다! – user1379210

0

이미지를 삭제하기 전에 이미지 사용을 검토 했습니까? 당신은 통지를하지 않을 때를 잠글 수 있습니다 귀하의 WPF 응용 프로그램의

다른 부분,

BitmapImage in WPF does lock file

관련 문제