2010-11-29 4 views
2

C#에서 FileSystemWatcher를 사용하는 것에 의심의 여지가 있습니다.
파일이 지정된 폴더에 만들어 졌을 때 알림을 받아야하지만 문제는 여러 파일을 동시에 만들고 여러 이벤트가 발생하고 이전 파일이 처리 된 경우에만 코드가 계속 실행되어야하며 동시에 여러 파일을 처리하지 마십시오.filesystemwatcher multiple files

실마리는 어떻게해야합니까?

많은 감사

+0

이 대한 의사 코드를 제공 할 수 있지만, 당신은 아마 별도의 스레드에서 실행 및 스레드 잠금을 사용 트리거있어 방법을해야 할 것이다. – xbonez

답변

1

의사 코드 :

bool wasLastObjectProcessed = true 

function onFileWatcherCreateFile 
    lock wasLastObjectProcessed 
     if wasLastObjectProcessed and processFile(file) 
      #do some code here that you need to do if it is processed 
     else 
      wasLastObjectProcessed = false 
     endif 
    endlock 
endfunction 
0

이 사용 스레드 안전한 방식으로 사용하는지 확인 다른 스레드에서 FileSystemWatcher

  • 큐에서의 Queue<T>
  • 인큐 만들기 Queue.Synchronized

  • 0

    파일 시스템 워처를 처리하는 방법 이벤트가 발생할 때마다 해당 이벤트의 세부 정보를 대기열에 추가한다는 것입니다. 그런 다음 대기 시간을 5 초 동안 설정합니다. 이 타이머는 파일의 복사가 완료되고 모든 작업이 완료되었는지 확인합니다 (예 : 여러 이벤트 발생).

    대기열을 처리 할 때 잠금 기능을 사용하여 주어진 시간에 하나의 스레드에서만 대기열을 처리 한 다음 대기열을 비우고 대기열이 비어있을 때까지 처리 할 수 ​​있습니다. 다시 끝났어.

    처리 중에 대기열에 추가하려는 경우 적절한 잠금을 수행해야 할 수 있습니다.