FileSystemWatcher на подключенном сетевом диске

Есть ли какие-либо особые соображения (кроме разрешений), которые вы должны учитывать при реализации FSW для мониторинга подключенного сетевого диска. Будет ли FSW генерировать исключение, если диск теряет соединение? Если нет (или если я просто поймаю / обработаю это исключение), будет ли достаточно опроса свойства DirectoryInfo.Exists для проверки соединения?


person Jess    schedule 17.07.2011    source источник


Ответы (1)


Что ж, я использовал FileSystemWatcher для наблюдения за общей папкой, которая существует на другом компьютере в сети, и вот мой опыт:

  1. Проверить соединение можно через File.Exists или Folder.Exists.
  2. FileSystemWatcher не вызовет исключения, если вы потеряете соединение с этой общей папкой. Вместо этого при потере соединения вы получите следующее сообщение об ошибке: «Указанное сетевое имя больше не доступно». Когда вы получите эту ошибку, FSW больше не будет обрабатывать какие-либо данные, даже если соединение будет восстановлено, поэтому обработайте событие FileSystemWatcher.Error и, если возникнет ошибка, снова сбросьте EnableRaisingEvents на true или повторно инициализируйте FSW
person Jalal Said    schedule 17.07.2011
comment
Я столкнулся с той же проблемой с FSW, который использовал. Но, по крайней мере, с .NET 4, я обнаружил, что все, что мне нужно сделать после возврата общего ресурса, - это установить EnableRaisingEvents в false (на самом деле это было сделано в обработчике FSW_Error), а затем, когда общий ресурс вернулся, установите EnableRaisingEvents в true. Он снова начал набирать обороты. - person Jim; 05.09.2012
comment
Полезно знать, это лучше, чем повторная инициализация :) - person Jalal Said; 06.09.2012