这是我的问题(C#,。net3.5):
我不会想到使用FileSystemWatcher,因为:
有人有什么建议吗?现在我尝试过FileSystemWatcher,它跳过了很多文件。我也使用了一段时间(真实)看起来读取文件,直到所有文件都被处理,但它消耗了90%的CPU。
非常感谢任何建议。
答案 0 :(得分:3)
一个建议:在多个线程上使用文件系统观察程序,这些线程将队列上的文件泵送到其他线程上进行处理。如果仍然继续删除文件,那么可以增加FileSystemWatcher缓冲区的大小,但这种方法应该可行。
答案 1 :(得分:-1)
我的问题是,你必须立即解析文件是什么?
我会每隔x分钟或几秒钟检查所有文件的目录,将它们放入队列并处理它们。如果由于某种原因想要保留文件,请删除文件或将其重命名为其他扩展名。
在捕获的最后一个文件之后,在计时器上检查x时间以查看是否有新文件。 是的,根据你的负载,你会得到一些备份,但是我建立了一个解析器系统,每分钟输入数百条记录,并且使用这种方法它运行良好和花花公子。
当在该x时间内没有要解析的记录时,程序会休息直到它检查下一个间隔。这很好,因为您可以使用此方法按特定顺序检查多个目录以及不同的进程。