繁体   English   中英

我如何才能使filesystemwatcher触发每个文件创建的事件而不会丢失任何事件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM