区分文件系统监视程序中的已更改和已创建事件?
作者:互联网
我正在使用FileSystemWatcher监视特定目录,当有人将编辑内容保存到文件时,我需要引发一个事件,而当他们创建或移动文件时,则需要引发另一个事件.
结合使用Deleted和Created事件,可以很好地监视移动的文件.当有人将编辑保存到文件时,确实会引发Changed事件.但是,当他们移动文件时,Changed事件也会引发,这会干扰我对Created和Deleted事件的处理.
因此,基本上,我只想在用户将编辑内容保存到文件时引发Changed事件,而不是在用户移动或创建文件时引发.我尝试使用ChangeType属性检查它是否实际上是Changed事件或Created事件,但是令我惊讶的是,即使在移动或创建文件时,也为Change事件引发了ChangeType Changed,而不是创建或创建的ChangeType.应该是其中一种).
所以我不知道如何检查Change事件实际上是由文件编辑触发的,而不是文件创建或移动触发的…
有任何想法吗?
解决方法:
当您应用某些NotificationFilter(例如NotifyFilter)时,这是正常现象.属性和NotifyFilter.LastAccess,如果在文件移动“已删除-已创建-已更改-已更改”时应用了两个过滤器,它甚至会通知已更改两次.
>只需不添加不相关的通知过滤器;如果您只是删除
NotifyFilter.属性和NotifyFilter.LastAccess
移动文件时,您不会收到Changed事件,只有Deleted然后Created.
>如果您希望使用已经使用的通知过滤器,这里还有其他提示可让您生成肮脏的解决方案,事实是,当文件移动时,通知序列将被删除,创建然后更改,它们将始终保持此顺序.
标签:filesystemwatcher,c-4-0,c,net 来源: https://codeday.me/bug/20191102/1990582.html