C# 枚举快速变化目录中的文件

C# 枚举快速变化目录中的文件,c#,filesystems,filesystemwatcher,enumerator,C#,Filesystems,Filesystemwatcher,Enumerator,我有一个文件夹,里面有很多文件(比如说100000个文件)。 另一个过程是在该文件夹中快速创建新文件,我希望有效地跟踪这些新创建的文件(FileSystemWatcher在这里帮不上忙,因为我会遇到很多“一次更改太多”的异常) 所以我想我可以通过使用Directory.EnumerateFiles(…)来解决这个问题,只需保留枚举器并每秒执行几次“MoveNext()”,这样我就不需要检查每次已经创建的所有文件 问题是,枚举器似乎正在处理目录的缓存版本,这意味着我永远不会得到新创建的文件(除非重

我有一个文件夹,里面有很多文件(比如说100000个文件)。 另一个过程是在该文件夹中快速创建新文件,我希望有效地跟踪这些新创建的文件(
FileSystemWatcher
在这里帮不上忙,因为我会遇到很多“一次更改太多”的异常)

所以我想我可以通过使用Directory.EnumerateFiles(…)来解决这个问题,只需保留枚举器并每秒执行几次“MoveNext()”,这样我就不需要检查每次已经创建的所有文件

问题是,枚举器似乎正在处理目录的缓存版本,这意味着我永远不会得到新创建的文件(除非重置枚举器,这意味着再次检查目录的整个内容)

我还尝试了CodeProject(虽然在内心深处我知道它们的工作原理可能完全相同),但得到了相同的结果


我真的希望有另一种优雅的方法来解决这个问题,有什么想法吗?

您可以在这里发布一些代码,这样我们就可以使用了吗?您是否尝试过创建一个新的枚举并使用Skip()方法和您维护的计数器?它并不优雅,但我怀疑FileSystemWatcher可能也在做类似的事情。@Rob使用skip不会有帮助,因为它的效率是O(n),这基本上意味着它只需执行n次MoveNext()操作。是的,总有一种方法-使用筛选器驱动程序动态跟踪文件创建。忘了FileSystemWatcher吧。@Nissim我们的CallbackFilter()是一个可能的选项。