2014-11-18 6 views
0

FileSystemWatcher를 사용하여 .net에서 내 폴더를 모니터하고 생성, 변경 및 이름 변경 이벤트를 실행 중입니다.filesystemwatcher 마지막 ​​감지 확인

작성 및 명칭 변경 이벤트에서

, NotifyFilter 내가 마지막 발사 1 초보다 과거 인 경우 이러한 이벤트를 발생하지 싶어 .. Changed 이벤트에 NotifyFilters.FileName 이가 이제 NotifyFilters.LastWrite

로 설정되어 있습니다. 그래서 모든 발사는 1 초의 지연이 필요합니다. 이는 또한이 지연 사이에 변경/이름 변경/생성 된 파일을 건너 뛸 수 있음을 의미합니다. 지연되는 동안 아무것도하지 말라.

검색해 보았지만 많이 정렬하지 못했습니다.

+0

오류 .. 가지고있는 문제를 지정하십시오. 실패한 코드의 코드 샘플을 제공하십시오. 오해가 있지만 SO는 자습서 사이트가 아니며 다른 사람들에게 기능 요청 및 구현을 요청할 수있는 커뮤니티도 아닙니다. 대리인, 이벤트 및 EventHandling의 ** 기본 사항 **을 검토하십시오. –

+0

나는 마지막 해고 된 파일의 시간을 얻는 방법을 모르고 1 초의 지연을 만든다. 내 코드는 3 개의 이벤트가있는 간단한 파일 시스템 워처입니다. – xpirt

+0

@DWRoelands는 귀하의 기준/조건이 시간이라면 다음과 같이 지적합니다. 비교하려면 두 가지 시점이 필요합니다. 'DateTime.Now()'와 자신의 변수로, 설정 한 조건이 만족되면'DateTime.Now(). AddSeconds (+1)'를 할당합니다. 이것은 당신의 전체 질문에 답하지 않습니다. 왜냐하면 당신은 발사를 막기를 원하기 때문입니다. 그것은 OOP이 오는 곳이며, 대의원, 이벤트, EventArgs 및 EventHandling에 대한 이해입니다. '할 일 '은 당신의 수업이 당신에게 요구하는 당신 만의 행사 여야합니다. –

답변

0

이벤트를 처리 할 다음 유효한 시간을 나타내는 시간 소인을 작성하십시오. 그런 다음 이벤트 핸들러에서 현재 시간을 해당 시간과 비교하십시오.

Public Class MyClass 
    Dim NextValidTime as DateTime 

    public sub Some_Event_Handler() 
     If Now() > NextValidtime Then 
      'do stuff 
      NextValidTime = DateAdd(DateInterval.Second, 1, Now) 
     Else 
      ' Not enough time has passed - do nothing 
     End If 
    end sub 
End Class 
+0

위의 설명에서 언급했으나 OP는 해당 조건을 기반으로 이벤트를 발생시키지 않으려 고합니다. 그래서 do stuff는 다음 샘플 이벤트 eventArg 선언 다음에 인상 이벤트 문이됩니다. –

+0

정확히 내가 찾던 것이 었습니다. 고맙습니다. – xpirt