互联网上有很多关于 ReadDirectoryChangesW API 函数在文件活动很多时丢失文件的帖子。大多数都归咎于调用 ReadDirectoryChangesW 函数循环的速度。这是一个不正确的假设。我见过的最好的解释是在下面的帖子中,2008 年 4 月 14 日星期一下午 2:15:27 的评论
http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/4465cafb-f4ed-434f-89d8-c85ced6ffaa8/
总结是 ReadDirectoryChangesW 函数在文件更改离开文件后写队列时报告文件更改,而不是在添加时报告。如果在提交之前添加了太多,你会忽略其中一些。如果您只是编写一个程序以真正快速地在目录中生成 1000 多个文件,您可以在您的实现中看到这一点。只需计算您收到多少文件事件通知,您就会发现有时您不会收到所有通知。
问题是,有没有人找到一种可靠的方法来使用 ReadDirectoryChangesW 函数而不必每次都刷新音量?如果用户不是管理员,则不允许这样做,并且还可能需要一些时间才能完成。