我有两个应用程序CREATOR
(我无法修改)和OBSERVER
。 CREATOR操纵许多文件,我需要OBSERVER知道何时发生。我在C#中编写了OBSERVER,我正在使用FileSystemWatcher
。我将路径设置为路径,将过滤器设置为FILE
并添加所有必要的事件。但是当CREATOR修改文件时,OBSERVER中不会引发任何事件。奇怪的是,当我手动修改文件时,OBSERVER 会看到更改。我认为CREATOR可能不会释放文件,但是当我关闭CREATOR时,OBSERVER仍然没有看到更改。
知道我做错了吗?
额外细节: 当CREATOR修改文件时,我可以手动删除它,或者当我打开文件时,我看到所有更改都已保存。
我的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 );
当然是这个事件的方法
答案 0 :(得分:0)
这里有一些提示可能对您有所帮助:
by hand
或其他应用程序“您创建者”并不重要,因为当您手动创建它们时,您实际上使用了某些应用程序,如“notepad.exe”或其他内容,所以这不重要。EnableRaisingEvent
设置为true“开始观看” 之后设置路径并注册事件处理程序,因此在设置观察程序的所有配置后应该是最后一件事NotifyFilter
设置整个通知过滤器,这会导致您有时会收到重复通知。fIncludeSubdirectories
应为false。SynchronizingObject
设为this
?一个更好的,如果你还要是将它带到new object()
。