2015-01-29 5 views
4

아래 답변. 나는 질문을 삭제할 수도없고 내 대답을 받아 들일 수도 없다 (아직).FileSystemWatcher는 폴더를 잠급니다.

나는 폴더에서 수신 대기 FileSystemWatcher이 있습니다. Windows 탐색기에서이 폴더의 이름을 변경하려고하면

The action can't be completed because the folder or a file in it is open in another program

오류가 발생합니다.

FileSystemWatcher을 주석 처리하면이 문제가 해결됩니다.

간단한 프로그램으로 오류를 재연 해 보았지만 성공하지 못 했으므로 여기서 어떤 일이 일어나고 있는지 잘 모르겠습니다. 누구도 FileSystemWatcher으로 이와 같은 문제가 발생 했습니까? 그렇다면 무엇이 원인일까요?

더 자세한 정보는 : 나는 해당 폴더에있는 파일의 이름을 바꿀 수 있습니다

FileSystemWatcher fsw = new FileSystemWatcher(path); 
fsw.Deleted += new FileSystemEventHandler(fsw_Deleted); 
fsw.EnableRaisingEvents = true; 

:

다음은 오류가 발생하기에 충분한 것 같다. 형제 자매. 나는 심지어 return;fsw_Deleted의 첫 번째 줄에 넣으려고했습니다. 아직도 작동하지 않았다. Visual Studio를 닫지 않고 obj와 bin을 삭제하고 다시 실행하지 않았던 것처럼. 그리고 심지어는 VS 내에서 exe 파일을 실행 해 보았습니다. 여전히 - 실행 중이 아닌 경우 잠금 없음, 잠금 상태 인 경우 잠김.

+0

아니,은 FileSystemWatcher은 (포인트 케이스를 고정하지 않습니다 : [C# FileSystemWatcher 구성 잠금 폴더 (HTTP : //stackoverflow.com/questions/2973477/c-sharp-filesystemwatcher-lock-folder)). 'fsw_Deleted'에 디렉터리 나 파일을 잠그는 무언가가있을 것입니다. – CodeCaster

+0

@CodeCaster 필자는'fsw_Deleted'의 첫 줄에'return;'을 넣기까지했습니다. 아직도 작동하지 않았다. 마찬가지로 Visual Studio를 닫지 않고,'obj'와'bin'을 삭제하지 않았습니다. 나는 무엇을 더 시도 할 수 있는지 모른다. 어떤 아이디어라도 환영합니다. – ispiro

+0

@CodeCaster 죄송합니다. 아니, 나는 그 일을 의미했다. 다시 뛰었다. 그리고 나는 VS 내에서 실행되지 않는'exe' 파일을 실행하려고했습니다. 여전히 - 실행 중이 아닌 경우 잠금 없음, 잠금 상태 인 경우 잠김. – ispiro

답변

3

나는 이것을 일으킨 것을 발견했습니다. 두 번째는 FileSystemWatcher이고 첫 번째 서브 디렉토리에는 첫 번째 서브 디렉토리의 이름 변경이 허용되지 않았습니다.

(그래도 여전히 놀랄 해요 FileSystemWatcher "보이지 않는"해야합니다.).

0

프로세스가 해당 폴더의 파일을 찾고 있기 때문에이 작업을 수행 할 것입니다. fsw.Rename에 대한 처리기를 추가하면됩니다. 그 과정에서 새 파일을 찾을 때 RemoveHandler를 수행 한 다음 폴더의 새 이름으로 다시 추가해야합니다.