Мы используем FileSystemWatcher для мониторинга документов, открытых из нашей системы управления документами, и, если пользователь сохраняет документ, мы спрашиваем, хотели бы они также обновить его в нашей системе.
У нас есть проблема с файлами XLS в Excel 2007 (не проверено, что проблема не существует в 2003 году, но это только файлы, которые открываются в режиме совместимости в 2007 году), когда событие Changed срабатывает сразу после открытия файл, а затем еще раз при закрытии файла, даже если ничего не изменилось, или пользователь решает не сохранять при закрытии. Такое же поведение не существует при открытии файлов XLSX.
Я написал тестовое приложение для проверки поведения, которое вы можете найти по адресу (http://www.just2guys.net/SOFiles/FSWExcel.zip).. В приложении есть один FileSystemWatcher для каждого типа NotifyFilter, так что очевидно почему Измененное событие сработало.
Каким образом вы можете предложить пользователю только когда документ действительно каким-то образом сохранен пользователем? Я могу начать мониторинг файла после вызова Process.Start, что позволяет мне пропустить сообщение при открытии документа, но я все равно получаю его при закрытии документа, даже когда ничего не изменилось.