我有一个应用程序,其中包含Timer
和FileSystemWatcher
,例如每5分钟批量处理已更改的文件。
FileSystemWatcher
仅在检查文件是否已存在于队列中之后,在更改文件并将文件路径添加到Queue
时引发事件。
当Timer
滴答时,它会遍历队列,弹出每个项目并进行处理;直到队列为空。
我的问题是:
Queue
的并发访问?如果是这样,我该如何处理呢?答案 0 :(得分:1)
已编辑: 问题1:我认为您用于文件批处理的方法和对象是合适的,如我所见。注意:处理更改的时间间隔应该足够公平,这样您就不会遇到任何文件锁定问题或类似问题。
问题2:如果从同一个实例访问队列,那么我没有看到任何问题。如果从不同的线程访问集合,则通常会遇到集合的锁定问题,这不是这种情况。
如果您遇到该问题或担心队列访问和线程安全,我建议再次使用 - Concurrent Collection types
您的问题:“如果Timer在FileSystemWatcher添加更改文件的同时进行滴答,会发生什么?” - 对这个问题的回答是 - “你不会得到任何异常或错误,文件更改添加项目将在下一个计时器滴答中进行处理。”