批量处理已更改的文件

时间:2012-12-05 12:04:52

标签: c# .net thread-safety

我有一个应用程序,其中包含TimerFileSystemWatcher,例如每5分钟批量处理已更改的文件。

FileSystemWatcher仅在检查文件是否已存在于队列中之后,在更改文件并将文件路径添加到Queue时引发事件。

Timer滴答时,它会遍历队列,弹出每个项目并进行处理;直到队列为空。

我的问题是:

  • 我是否正在尝试正确解决此问题并使用正确的数据类型?
  • 我是否需要担心Queue的并发访问?如果是这样,我该如何处理呢?

1 个答案:

答案 0 :(得分:1)

已编辑: 问题1:我认为您用于文件批处理的方法和对象是合适的,如我所见。注意:处理更改的时间间隔应该足够公平,这样您就不会遇到任何文件锁定问题或类似问题。

问题2:如果从同一个实例访问队列,那么我没有看到任何问题。如果从不同的线程访问集合,则通常会遇到集合的锁定问题,这不是这种情况。

如果您遇到该问题或担心队列访问和线程安全,我建议再次使用 - Concurrent Collection types

您的问题:“如果Timer在FileSystemWatcher添加更改文件的同时进行滴答,会发生什么?” - 对这个问题的回答是 - “你不会得到任何异常或错误,文件更改添加项目将在下一个计时器滴答中进行处理。”