2009-04-24 5 views
1

Windows 2003의 내 응용 프로그램 (VB6 및 C# 2008)에서 두 번 파일을 포함하는 폴더를 삭제하는 것과 비슷한 동작이 발생했습니다. 내 코드는 임시 폴더를 만들고 이후 처리를 위해 해당 폴더에 파일을 생성합니다. 처리가 완료되면 내 코드에서 생성 된 임시 폴더를 삭제하려고 시도합니다. 삭제 작업은 오류없이 완료됩니다.NTFS에서 대기열을 삭제 하시겠습니까?

그러나 추가 검사를 통해 폴더가 Windows 탐색기에 여전히 있음을 알 수 있습니다. 이 폴더를 탐색하려고 시도하면 권한 거부 오류가 발생합니다. 나중에 응용 프로그램에서 다른 라운드 파일을 처리하고 임시 폴더를 다시 만들려고합니다. 불행하게도 이전 보류중인 삭제가 완료되지 않았으므로 폴더를 다시 만들려고하면 권한이 거부되었습니다. 내 응용 프로그램을 닫을 때까지 폴더가 실제로 삭제되지 않습니다. 앱이 종료 되 자마자 폴더가 삭제됩니다. 앱을 닫을 때까지 내 폴더 삭제 작업이 커밋되지 않는 이유는 무엇입니까?

+0

추가 질문이 1 개 있습니다. 적극적으로 잠긴 파일이있는 폴더를 삭제해서는 안되며 삭제 작업을 대기열에 두는 대신 예외가 발생합니까? –

+0

예. http://stackoverflow.com/questions/3764072/c-win32-how-to-wait-for-a-pending-delete-to-complete – Henrik

답변

0

나는 그 디렉토리에 실수로 잠금을 유지했을 가능성이 있습니까? 그 이유는 앱이 떠날 때까지 디렉토리를 삭제할 수없는 이유를 설명해줍니다.

파일/디렉토리 잠금을 나열하는 몇 가지 도구가 있습니다. SysInternals를 사용해보십시오. 앱을 사용해 본 다음 잠금 장치가 있는지 확인하세요. 그런 다음 그 잠금을 강제로 제거 할 수 있다고 생각합니다. 디렉토리가 즉시 사라지는 지 확인하십시오.

+0

추가 질문이 있습니다. 적극적으로 잠긴 파일이있는 폴더를 삭제해서는 안되며 삭제 작업을 대기열에 두는 대신 예외가 발생합니까? –

+0

이것은 답변이 아닙니다 ... – Henrik

관련 문제