버퍼 크기를 늘리는 것만으로는 충분하지 않고 한 번에 이벤트를 트리거하는 파일 수를 제어 할 수없는 경우 추가 폴링을 추가해야합니다.
단순히 버퍼 크기를 증가하지만이 신중하게해야하는 것이 유혹 수 있습니다. 실제로, 네트워크 액세스에 관해서는 64k 제한이 있습니다. 버퍼 길이가 64KB보다 큰이며, 응용 프로그램이 네트워크를 통해 디렉토리를 모니터링 할 때
FileSystemWatcher across the network (전체 게시물 아래)
내가 FileSystemWatcher.InternalBufferSize 의 문서는 네트워크모니터링 버퍼 크기에 대해 매우 분명한 언급하지 않았다 미안 해요경로. 네트워크 경로를 모니터링 할 때 64K 을 초과하지 않는 것이 좋습니다.
FileSystemWatcher는 기본적으로 a입니다.Win32 ReadDirectoryChangesW API 용 래퍼. ReadDirectoryChangesW를 사용하려면 OS가 변경 사항으로 채울 버퍼를 지정하십시오. 그러나, ReadDirectoryChangesW 문서 에 언급되지 않은 (그러나 FileSystemWatcher 구성 문서에서 암시되는) 어떤 는 파일 시스템이 업데이트 할 수있는 기회가 될 때까지 일시적으로 변경 정보 를 저장하기 위해 내부 커널에게 버퍼를 생성하는 것입니다 사용자 버퍼 커널 버퍼는 ReadDirectoryChangesW에 지정된 크기와 동일한 크기 인 이며 비 페이징 풀링 된 메모리에 으로 생성됩니다. FileSystemWatcher/ ReadDirectoryChangesW가 호출 될 때마다/ 이 호출 될 때마다 새 커널 버퍼가 으로 생성됩니다.
커널 메모리 (페이징 및 비 페이징) 풀 장치 드라이버 및 사용 다른 커널 컴포넌트 시스템 주소 공간에서 방치된다. 그들은 으로 동적으로 커지고 수축됩니다. 이 필요합니다. 풀의 현재 크기는 작업 관리자의 성능 탭으로 이동하면 쉽게 확인할 수 있습니다. 풀은 부팅시에 계산되는 최대 값에 도달 할 때까지 동적으로 으로 증가하며 사용 가능한 시스템 리소스 (주로 RAM)에 따라 달라집니다. 이 최대 값에 도달하려고하지 않거나 다양한 시스템 서비스 및 드라이버 이 실패하기 시작합니다. 그러나이 계산 된 최대 값은 쉽게 사용할 수 없습니다. . 최대 풀 크기를 확인하려면 커널 디버거를 사용해야합니다. 메모리 풀에 대한 자세한 내용을 보려면 MSPress 서적의 7 장을 참조하십시오. Solomon 및 Russinovich.
염두에두고 어떤 크기의 버퍼 에 권장 사항이 없습니다. 시스템 풀의 현재 및 최대 크기는 으로 클라이언트에서 클라이언트로 다양합니다. 그러나 각 FileSystemWatcher/ ReadDirectoryChangesW 버퍼에 대해을 64k 이상 사용해서는 안됩니다. 이 은 네트워크 액세스가있는 64k 제한이 으로 ReadDirectoryChangesW에 기록되어 있다는 사실에서 기인합니다. 그러나 결국 을 사용하여 에서 버퍼를 조정할 수 있도록 다양한 대상 시스템에서 의 예상 대상 시스템을 테스트해야합니다.
오버 헤드가 닷넷 응용 프로그램과 연관 나는 는 Win32 ReadDirectoryChangesW 프로그램 이 같은 버퍼 사이즈로 더 나은 성능을 달성 할 수있을 것으로 생각된다. 그러나, 매우 빠르고 많은 파일 변경, 버퍼 오버런이 불가피 되며 의 변화를 감지 할 디렉토리를 열거하는 등 수동으로 같은 오버런이 발생하면 개발자는 경우를 처리해야 할 을 것입니다. 결론적으로
은은 FileSystemWatcher 및 ReadDirectoryChangesW는 제한이 예정되어있는 경량 파일 변경 감지 메커니즘입니다. 변경 저널 우리가 중간 무게의 솔루션을 고려해야 할 또 다른 메커니즘이지만, 은 여전히 제한이있을 것입니다 : 전용 파일 시스템 필터를 드라이버를 쓰기에
http://msdn.microsoft.com/en-us/library/aa363798%28VS.85%29.aspx
중량이 무거운 솔루션이 될 것이라고 파일 시스템에 앉아 파일 시스템 이 변경되고 모니터합니다. 물론 이것은 가장 복잡한 접근 방법이 될 것입니다. 대부분의 바이러스 스캐너, 백업 소프트웨어 및 파일 과 같은 시스템 모니터링 유틸리티 filemon (www.sysinternals.com) 필터 드라이버를 구현합니다.
위의 설명을 참조하면 문제의 근본 원인을 파악할 수 있습니다. . 자세한 정보가 필요하면 에게 회신하여주십시오. 고맙습니다.
그냥 작은 추가 : 기본 버퍼 크기는 8192 –