[英]How can I determine which file filter was matched for a FileSystemWatcher event?
[英]how can i enable filesystemwatcher to fire each and every file created event without loosing any
我想在特定文件夹中创建任何文件后立即收集文件的路径。
我使用了List<string>
和FileSystemWatcher
组件。 我将路径添加到Created
事件中的List
,一切正常。
但是,当创建了许多小文件时(例如2000年左右), Created
事件仅被触发1200次。 但是,当我不将路径添加到Created
事件中的列表时,它将被调用2000次。 我尝试使用单独的线程,但无济于事。
如何启用FileSystemWatcher
触发每个事件而又不丢失某些事件?
很有可能是比赛条件,并且同时将2个文件添加到列表中。 最后写胜。 在添加到列表之前锁定列表可以防止这种情况。 如果您使用的是.net 4.0,则还可以使用并发字典或readwriteslim来解决并发问题。
确保实现Error事件,以便您知道何时出错。 保持通知事件处理程序简短明了,只需将文件添加到列表中然后退出即可。 在另一个工作线程中处理列表。 增加InternalBufferSize可以有所帮助,但应避免。
我发现,IIRC, FileSystemWatcher
在处理给定的Created
事件时不会“看到”任何新文件。 也就是说,在处理Created
事件处理程序时, Created
任何新文件都不会引发该事件。
您是否尝试过加快处理速度(也许启动了异步线程)? 我知道您提到了一个单独的线程,但是没有代码,很难说出该线程在做什么或如何使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.