当前位置:  开发笔记 > 运维 > 正文

当我将文件复制到目录时,为什么FileSystemWatcher会创建多个更改事件

如何解决《当我将文件复制到目录时,为什么FileSystemWatcher会创建多个更改事件》经验,为你挑选了1个好方法。

我使用.Net FileSystemWatcher编写了一个小测试应用程序,以便密切关注目录.当我将一个大型(几个Mb)文件复制到该目录中时,我会列出以下事件(请参阅屏幕截图 - 并忽略开始时的删除事件).

替代文字http://robinwilson.homelinux.com/FSW.png

我得到了一个创建的事件(如预期的那样),但随后发生了两个更改的事件(相隔大约0.7秒).为什么是这样?这会导致我计划开发的应用程序出现重大问题 - 因为我会尝试用文件做两次事情(大概是在它写完之前一次!).有什么办法可以阻止这种情况发生吗?从我在StackOverflow和其他地方读到的内容来看,一旦文件被更改然后关闭,您应该只获得一个更改的事件.我为什么要两个?



1> Alex Lyman..:

根据文档(参见事件和缓冲区大小下的第一个项目符号点):

常见的文件系统操作可能会引发多个事件.例如,当文件从一个目录移动到另一个目录时,可能会引发几个OnChanged和一些OnCreated和OnDeleted事件.移动文件是一项复杂的操作,由多个简单操作组成,因此会引发多个事件.同样,某些应用程序(例如,防病毒软件)可能会导致FileSystemWatcher检测到其他文件系统事件.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有