Лучшая архитектура для обработки изменений файловой системы? - PullRequest
2 голосов
/ 26 августа 2008

Вот сценарий:

Я пишу приложение, которое будет отслеживать любые изменения в определенном каталоге. Этот каталог будет заполнен тысячами файлов в минуту, каждый с «почти» уникальным GUID. Формат файла такой:

GUID.dat, где GUID == xxxxxxxxxxxxxxxxxxxxxxxxxxxxx (внутреннее содержание не имеет значения, но это просто текстовые данные)

Моим приложением будет форма с одним текстовым полем, в котором отображаются все файлы, которые добавляются и удаляются в режиме реального времени. Каждый раз, когда появляется новый файл, мне нужно обновить текстовое поле этим файлом, НО я должен сначала убедиться, что этот полууниверсальный GUID действительно уникален, если он есть, обновить текстовое поле этим новым файлом.

Когда файл удаляется из этого каталога, убедитесь, что он существует, затем удалите его, соответственно обновите текстовое поле.

Проблема в том, что я использую .NET filewatcher, и кажется, что есть внутренний буфер, который срабатывает при каждом входе (buffersize + 1) -й файл. Я также пытался сохранить внутренний Перечислите в моем приложении и просто добавьте каждый входящий файл, но позже выполните проверку уникального GUID, но без кубиков.

Ответы [ 2 ]

3 голосов
/ 26 августа 2008

Несколько вещей, которые у меня в голове:

  • Если guid не уникален, не будет ли он перезаписывать файл с тем же именем или проверка основана на поиске, который выполняет какое-то внешнее действие (например, проверяет архив)? (то есть это момент ЯГНИ?)
  • Ранее я пользовался FileSystemWatcher с довольно хорошим успехом. Можете ли вы дать нам несколько идей относительно как как вы на самом деле делаете вещи?
  • Когда вы говорите «без кубиков» при работе с вашим пользовательским списком, в чем была проблема? И как вы проверяли изменения файловой системы без FileSystemWatcher?!

Извините, что пока нет ответа, просто хотел бы узнать больше о проблеме:)

2 голосов
/ 26 августа 2008

Я предлагаю вам взглянуть на API-вызов SHChangeNotify , который может уведомлять вас обо всех видах событий оболочки. Чтобы отслеживать действия по созданию и удалению файлов, вы можете обратить особое внимание на аргументы SHCNE_CREATE и SHCNE_DELETE.

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