2013-06-05 2 views
0

파일을 만드는 C# 단일 스레드 응용 프로그램이 있습니다. 해당 파일을 사용한 다음 삭제합니다. 때로는 응용 프로그램에서 해당 파일을 삭제하는 데 문제가 있습니다. 내가 얻을 오류는 다음과 같습니다.C#에서 파일이 삭제되지 않도록하는 프로세스가 무엇입니까?

"프로세스가 파일 - 파일 경로 및 파일 이름 - 다른 프로세스에서 사용 중이기 때문에 액세스 할 수 없습니다."

이 파일을 보유하고있는 프로세스가 무엇인지 어떻게 알 수 있으며 어떻게 파일을 삭제할 수 있도록 해당 프로세스를 만들 수 있습니까?

+0

공유 코드로 종료되어 있는지 확인 파일. –

+3

파일을 닫지 않을 것입니다. 파일을 직접 열었 으면 파일을 삭제하기 전에 닫아야합니다. – Oded

+1

Windows 인덱싱 서비스 일 수 있습니까? WhoLockMe라는 무료 유틸리티가있어 과거에는 성공적으로 사용했습니다. (Google it) –

답변

0

우리가 볼 수 있도록 관련 코드를 게시해야합니다.

그러나 항상 앱이 열어 본 파일을 닫아야합니다.

일반적으로이 같은 뭔가을 확인합니다 :

using(var f = File.OpenRead("myfile")) { 

     ... 
    } 

또는 동등 :

try { 
     var f = File.OpenRead("myfile"); 
    } finally { 

     f.close() 

    } 
0

하기 이전에 삭제 파일을 닫는되어 있는지 확인합니다.

는 StreamWriter 클래스를 사용하는 경우 응용 프로그램의 수명 동안 액세스하는 데 사용하고 난 당신이 "사람을 사용하고"를 찾아 내기 당신이 변수

Ex. StreamWriter sw = new StreamWriter(); 
    // some writing operation 
    sw.Close(); 
+0

귀하의 의견과 제안에 모두 감사드립니다. 나는 finally 블록에 가비지 콜렉션을 강제해야만했다. 그리고 모든 파일 스트림 리소스를 릴리스했습니다. –

관련 문제