2010-10-20 2 views
1

Я использую FileSystemWatcher в каталоге и добавил свои обработчики событий, установил его EnableRaisingEvents=true; и IncludeSubdirectories=false; и добавил NotifyFilters.FileNotFoundException в FileSystemWatcher

Во время работы приложения, если я создавать новые папки в указанном каталоге иногда я получаю

FileNotFoundException: «Произошла ошибка при чтении каталога». System.IO.FileSystemWatcher.StartRaisingEvents() System.IO.FileSystemWatcher.set_EnableRaisingEvents (значение Boolean)

Что может быть причиной этой проблемы?

Что такое StartRaisingEvents()?

+0

Вы можете опубликовать фактический код. Я предполагаю, что вы неправильно создаете пути к папкам. – codingbadger

+0

Я создаю новые папки с помощью проводника> Создать новую папку – munna

ответ

2

Это, как правило, потому, что FileSystemWatcher может быть ненадежным. Когда вы получаете события, папка может не «полностью» существовать. Возможно, вам придется повторить попытку с достаточными паузами и выполнить различные проверки Directory.Exists() до фактического выполнения операций ввода-вывода.

+0

Мне пришлось поставить поток в режим сна, чтобы убедиться, что файл был успешно создан до выполнения операций над файлом. – dhirschl

0

У меня такая же проблема, и, наконец, я выяснил, что проблема была в этом пути.

Directory.Exist() дать ответ, что каталог существует ... даже если путь был пустым в конце строки, но FileSystemWatcher не мог управлять им. Итак, очевидно, что Directory.Exist() обрезать путь, но Наблюдатель этого не делает. В моем случае удаление пустых символов решает проблему.

Надеюсь, это может помочь кому-то.