FileSystemWatcher завершается с 1000 созданий файлов - PullRequest
5 голосов
/ 15 декабря 2010

Я использую FileSystemWatcher для мониторинга папки A. Если файл создается или копируется в эту папку, он будет перемещен в папку B.

Я создал файл в папке A, щелкнув правой кнопкой мыши, выбрав «Новый», выбрав «Текстовый документ». Файл перемещается в папку B немедленно. Но если я использую программу для создания 1000 файлов в папке A, то они не перемещаются в папку B. Как кажется, FileSystemWatcher не может обнаружить 1000 файлов, созданных программой.

Может кто-нибудь объяснить это для меня?

1 Ответ

15 голосов
/ 15 декабря 2010

Похоже, что 1000 файлов переполнят буфер FileSystemWatcher.Отличное объяснение здесь .

Отрывок ссылки:

Размер буфера и событие ошибки

Класс FileSystemWatcher работает путем захвата всех соответствующихфайл и старые изменения и помещая их в буфер.Затем он обрабатывается по одному изменению за раз, пока все уведомления не будут обработаны и буфер не будет пуст.По умолчанию внутренний буфер имеет размер восемь килобайт (8192 байта).Каждое событие может занимать до шестнадцати байтов буфера для своих данных, не включая имя файла.Это означает, что когда за короткий промежуток времени происходит много изменений, буфер может быстро перегружаться и уведомления могут быть потеряны.

Обработка правильного события ошибки из FileSystemWatcher позволит вам кодироватьза эту возможность.Например, проверьте и / или работайте с папкой события ошибки с помощью собственной логики ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...