Наблюдатель файловой системы иногда не подбирает файлы должным образом даже если служба окон работает должным образом
Всем Привет,
Ниже приведен мой сценарий:
Я получу xml-файл в своей исходной папке, и я должен забрать их и обработать создать новый xml-файл и поместить его в папку назначения. У меня есть оконная служба в моем приложении, в которую я включил концепцию наблюдателя файловой системы для выполнения вышеуказанной задачи.
Теперь у меня есть два потока - основной поток(служба окон) и рабочий поток(очередь). Наблюдатель файловой системы находится в основном потоке, и созданное событие настраивается для обработки файлов. Для объекта-наблюдателя, уведомить фильтра=именем;исполнение фильтра=*.в формате XML;включать подкаталоги=ложь;внутренний буфер=32768.
Now when processing file i just get filename from filesystem watcher of main thread and provide it to worker thread(it is a background thread). In this worker thread i use queue concept where i will queue up files then process them one by one, when queue count > 0 then return back to watching folder step processing of all files is done.I opted for this strategy, since i gone through several sites and came to know buffer overflow might occur causing files not recognized. (Note:Files come from an external system - have no idea if file transfer is by move or copy or ftp) But still on initial stages of testing when external system was involved there was no issues.
Но, к сожалению, через 15 дней или около того я просто включил логику проверки в соответствии с запросом клиента, ни один из оставшихся кодов не был затронут, но иногда файлы остаются в исходной папке без обработки. если я проверю сервис, то он будет в рабочем состоянии. Если я вырезаю и вставляю файл в исходную папку, то происходит запуск события и оно обрабатывается.Это не происходит в моей среде разработки, когда я запускаю код и проверяю его. Но это происходит в моей тестовой среде, где я развернул свое приложение.
В этот момент я застрял и не знаю, где и как проверить...
Потому что папка сталкивается только с несколькими файлами, и они будут только около 10-15 КБ. я не верю, что причиной может быть переполнение буфера. И я не знаю, изменила ли внешняя система способ размещения файла в моей исходной папке.
В любом случае мне нужны все предложения/обходные пути/ссылки для справки, которые я могу проверить и исчерпать у коллег-кодеров/членов codeproject.
Пожалуйста, помогите мне решить эту проблему. Так как он скоро выйдет в эфир. Клиент уже жалуется на эту проблему на этапе UAT в тестовой среде.
Заранее спасибо.
********Обновление 12-04-2013 10:42 вечера*********
Получил информацию от внешней системы о том, что передача файлов происходит по FTP. Нет никаких улучшений, даже если размер буфера увеличился с 32 Кб до 48 КБ. Теперь этот выбор файлов-единственная проблема, с которой сталкивается клиент. Все остальные необходимые функции, выполняемые приложением, успешно очищаются.
Должен ли я включить переименованное или измененное событие filesystemwatcher? Если вы скажете "да", то какое событие я должен включить и рассказать, почему оно было предложено вами.