FileSystemWatcher не работает правильно, когда много файлов добавляются к каталогу одновременно

Зависит полностью от Вашего предпочтения. Существует не "правильный путь".

При выполнении C++ в моих собственных любимых проектах я лично сохраняю соглашение, что я поместил модификатор доступа перед каждым объявлением элемента или объявлением метода.

7
задан Henrik 15 October 2009 в 13:43
поделиться

1 ответ

Параметр документация по этому классу подробно описывает эту проблему:

Операционная система Windows уведомляет ваш компонент об изменениях файлов в буфере, созданном FileSystemWatcher. Если за короткое время произойдет много изменений, буфер может переполниться. Это приводит к тому, что компонент теряет отслеживание изменений в каталоге и будет предоставлять только общее уведомление. Увеличение размера буфера с помощью свойства InternalBufferSize является дорогостоящим, так как оно происходит из невыгружаемой памяти, которую нельзя выгружать на диск, поэтому сохраняйте размер буфера как можно меньше, но достаточно большим, чтобы не пропустить изменение файла. События. Чтобы избежать переполнения буфера, используйте свойства NotifyFilter и IncludeSubdirectories , чтобы отфильтровать нежелательные уведомления об изменениях.

Так что потоки, вероятно, вам не сильно помогут в этом случае. Вероятно, вы захотите либо увеличить размер буфера (но насколько он должен быть большим, вполне может зависеть от скорости компьютера и самого диска), либо ограничить количество интересующих вас файлов, установив соответствующий фильтр.

12
ответ дан 6 December 2019 в 19:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: