FileSystemWatcher Changed事件重入问题:多变化触发时的处理逻辑咨询
FileSystemWatcher Changed事件的并发触发行为
正确选项是2.等待第一个事件处理程序执行完毕后再触发事件
FileSystemWatcher内部实现了事件调用的队列机制:当事件处理程序正在执行时,新检测到的文件变化事件会被加入队列,等待当前处理程序执行完成后再依次触发后续事件。
正如你通过控制台应用测试发现的,即使在第一个处理程序执行期间发生多次文件变化,这些事件也会被依次入队处理,不会丢失,也不会同时启动多个线程执行事件处理程序(除非你在处理程序内部手动创建新线程)。
另外需要注意,FileSystemWatcher存在一个已知问题——单次文件修改操作可能会触发两次Changed事件,这一般是因为文件修改过程中会产生多个底层文件系统通知(比如文件内容变更与文件属性更新)。
内容的提问来源于stack exchange,提问作者Andrew Stephens
相关产品推荐
相关产品推荐

