У меня есть два приложения: CREATOR (которое я не могу изменить) и OBSERVER. CREATOR управляет множеством файлов, и мне нужно, чтобы OBSERVER знал, когда это произойдет. Я написал OBSERVER на C # и использую FileSystemWatcher. Я задаю путь к своему пути, устанавливаю фильтр на FILE и добавляю все необходимые события. Но когда CREATOR изменяет файл, в OBSERVER не возникает никаких событий. Как ни странно, когда я изменяю файл вручную, OBSERVER видит изменение. Я подумал, что, возможно, CREATOR не освобождает файл, но когда я закрываю CREATOR, OBSERVER все еще не видит изменений.
Есть идеи, что я делаю не так?
Дополнительные сведения: когда СОЗДАТЕЛЬ изменяет файл, я могу удалить его вручную, или когда я открываю файл, я вижу, что все изменения сохранены.
редактировать
моя настройка объекта fileSystemWatcher:
fileSystemWatcherObs.EnableRaisingEvents = true;
fileSystemWatcherObs.Filter = "kbd.dbf";
fileSystemWatcherObs.IncludeSubdirectories = true;
fileSystemWatcherObs.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite | NotifyFilters.Attributes |
NotifyFilters.CreationTime | NotifyFilters.DirectoryName |NotifyFilters.LastAccess | NotifyFilters.Security |
NotifyFilters.Size;
fileSystemWatcherObs.Path = "D:\\FOLDER";
fileSystemWatcherObs.SynchronizingObject = this;
fileSystemWatcherObs.Changed += new System.IO.FileSystemEventHandler( this.fileSystemWatcherObs_Changed );
fileSystemWatcherObs.Created += new System.IO.FileSystemEventHandler( this.fileSystemWatcherObs_Created );
fileSystemWatcherObs.Deleted += new System.IO.FileSystemEventHandler( this.fileSystemWatcherObs_Deleted );
fileSystemWatcherObs.Renamed += new System.IO.RenamedEventHandler( this.fileSystemWatcherObs_Renamed );
и, конечно, метод для этого события
Flush()в потоке записи или около того ... Другое дело, почему вы установили все фильтры уведомлений? вам нужно всего несколько из них - person Jalal Said   schedule 20.08.2011FileSystemWatcherнаkbd.dbf, что означает, что вы будете смотреть только этот один файл. - person adrianbanks   schedule 20.08.2011