2013-01-25 3 views
0

가능한 중복 :
Wait until file is unlocked in .NETFileSystemWatcher를 사용하여 파일이 다른 프로세스에 의해 잠겨 있는지 확인하는 방법?

내가 다시 사용하기 전에 파일을 (예를 들어, 파일이 복사되는) 다른 프로세스에 의해 해제 될 때까지 프로그램이 대기해야 많은 경우가 있습니다. 표준 해결책은 Thread.Sleep()을 사용하여 루프에서 iterating을 기다리는 것입니다. 나는 친절하다고 생각하지 않습니다. .NET의 FileSystemWatcher (C#을 사용 중입니다)를 사용하여이 작업을 수행 할 수 있음을 읽었습니다. 아무도 그것을 설명 할 수 있습니까? 답장을 보내 주셔서 감사합니다. 이름에서 알 수 있듯이

+0

no. FileSystemWatcher는 파일 핸들이 해제 될 때 알려주지 않습니다. –

+0

그러나 파일이 생성되면 sertain 이벤트가 발생합니다. 그게 내 문제의 해결책이 될 수 없습니까? – relapse

+1

잠금 해제 된 파일이 작성중인 파일과 같지 않습니다. – xpda

답변

2

FileSystemWatcher, 당신은 당신이 change, create, delete, rename 파일이나 폴더가

당신은 파일이 잠겨 있는지 확인하는 FileSystemWatcher를 사용할 수 없을 때 발생하는 모든 이벤트에 대한를 볼 수 있습니다 ..

0
FileSystemWatcher _watcher; 
int _watcherEventFiredCounter; 

_watcher = new FileSystemWatcher { 
    Path = @"C:\temp", 
    NotifyFilter = NotifyFilters.LastWrite, 
    Filter = "*.zip", 
    EnableRaisingEvents = true 
}; 

_watcher.Changed += OnChanged; 


private void OnChanged(object sender, FileSystemEventArgs e) 
{ 
    _watcherEventFiredCounter++; 
    // The event is fired two times: on start copying and on finish copying 
    if (_watcherEventFiredCounter == 2) { 
     Console.WriteLine("Copying is finished now!"); 
     _watcherEventCounter = 0; 
    } 
} 

이제는 어떻게 호출 스레드로 돌아갈 수 있습니까?

+0

제가 준 응답을 살펴볼 수 있습니다 귀하의 원본 질문 : http://stackoverflow.com/a/42782410/6754146 –