我正在使用FileSystemWatcher
来监控某个目录,当有人将编辑内容保存到文件时,我需要引发一个事件,而当他们创建或移动文件时,我需要引发另一个事件。
使用Deleted
和Created事件的组合监控移动的文件可以正常工作。当有人将编辑保存到文件时,Changed事件确实会被提升。但是,当他们移动文件时,Changed
事件也会被提升,这会干扰我对Created
和已删除事件的处理。
所以基本上,我只想在用户将编辑保存到文件时提升Changed
事件,而不是在用户移动或创建文件时。我尝试使用ChangeType
属性来检查它是否实际上是Changed
事件或Created
事件,但令我惊讶的是,ChangeType
Changed
是即使在移动或创建文件时也为Change事件引发,而不是ChangeType
Created
(应该是其中一种类型)。
所以我不知道如何检查Change事件是否实际上是由文件编辑触发的,而不是文件创建或移动......
有什么想法吗?
答案 0 :(得分:4)
当您应用NotificationFilter
和NotifyFilter. Attributes
之类的NotifyFilter.LastAccess
时,这是正常行为,如果在文件移动时应用了两个过滤器,它甚至会通知Changed
两次已删除 - 已创建 - 已更改 - 已更改“,因此:
NotifyFilter. Attributes
和NotifyFilter.LastAccess
移动文件时,您不会收到Changed
事件,仅Deleted
然后Created
。Deleted
,Created
然后Changed
,它们将始终按此顺序显示..