1

例如,我有一个应用程序,其中包含 aTimer和 aFileSystemWatcher用于每 5 分钟对更改的文件进行批处理。

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

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

我的问题是:

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

1 回答 1

1

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

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

再说一次,如果您遇到该问题或担心队列访问和线程安全,我建议您使用 -并发集合类型

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

于 2012-12-05T12:22:24.063 回答