C# 区分FileSystemWatcher中已更改和已创建的事件?
我正在使用C# 区分FileSystemWatcher中已更改和已创建的事件?,c#,.net,c#-4.0,filesystemwatcher,C#,.net,C# 4.0,Filesystemwatcher,我正在使用FileSystemWatcher监视某个目录,当有人保存对文件的编辑时,我需要引发一个事件,当他们创建或移动文件时,我需要引发另一个事件 使用已删除和已创建事件的组合,可以很好地监控移动的文件。当有人保存对文件的编辑时,确实会引发更改事件。但是,当他们移动文件时,Changed事件也会引发,这会干扰我对创建的和删除的事件的处理 因此,基本上,我只想在用户保存对文件的编辑时引发Changed事件,而不是在用户移动或创建文件时。我尝试使用ChangeType属性检查它实际上是Change
FileSystemWatcher
监视某个目录,当有人保存对文件的编辑时,我需要引发一个事件,当他们创建或移动文件时,我需要引发另一个事件
使用已删除
和已创建事件的组合,可以很好地监控移动的文件。当有人保存对文件的编辑时,确实会引发更改事件。但是,当他们移动文件时,Changed
事件也会引发,这会干扰我对创建的
和删除的事件的处理
因此,基本上,我只想在用户保存对文件的编辑时引发Changed
事件,而不是在用户移动或创建文件时。我尝试使用ChangeType
属性检查它实际上是Changed
事件还是Created
事件,但令我惊讶的是,即使在移动或创建文件时,也会为更改事件引发ChangeType
Changed,而不是ChangeType
Created(应该是其中一种类型)
所以我不知道如何检查更改事件是否由文件编辑触发,而不是由文件创建或移动触发
有什么想法吗?当您应用一些
NotificationFilter
时,这是正常的行为,例如NotifyFilter.Attributes
和NotifyFilter.LastAccess
,如果在文件移动“Deleted-Created-Changed-Changed”时应用了两个过滤器,它甚至会通知Changed
,因此:
- 只要不添加不相关的通知过滤器;如果您只是删除
和NotifyFilter.Attributes
移动文件时,您不会收到NotifyFilter.LastAccess
事件,只有Changed
然后Deleted
Created
- 如果您希望继续使用您已经使用的notify筛选器,这里还有其他提示,允许您生成脏的解决方案,事实上,当文件移动时,通知的顺序将被
,删除
,然后创建
,它们将始终按此顺序更改