Неправильное поведение FileSystemWatcher с Samba
-
13-09-2019 - |
Вопрос
Я использую .NET FileSystemWatcher на сервере Windows для просмотра папки на сервере Windows.У меня также есть доступ к той же папке с сервера Linux, использующего Samba.Если я копирую файл из просматриваемой папки в другое место, для исходного файла генерируется событие изменения.Правильно ли такое поведение?Похоже, это изменяет время последнего обращения к файлу.Как я могу игнорировать такого рода изменения?
Решение
Время "последнего обращения" устанавливается программами Windows непоследовательно:например, отображение контекстного меню свойств файла в Windows на этот раз приведет к сбросу настроек.Как вы заявляете, Windows Copy не устанавливает время "последнего доступа", но копирование файла на Windows server с использованием Samba выполняется так, как это делают внутренние драйверы Samba.
Боюсь, ваше единственное обходное решение - игнорировать время "последнего доступа", используя фильтр в вашем FileSystemWatcher:
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "c:\yourpathhere";
watcher.NotifyFilter = NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
или что-то подобное.