【发布时间】:2011-06-05 05:00:11
【问题描述】:
我的任务是实现具有类似行为的服务。 我的问题是:
索引服务如何记住哪些文件已被索引,哪些没有,哪些文件已更改并需要重新索引?
另外,我可以停止此服务,然后在几天后启动它,它会继续工作。 它是否有自己的包含文件信息的数据库?
谢谢
【问题讨论】:
我的任务是实现具有类似行为的服务。 我的问题是:
索引服务如何记住哪些文件已被索引,哪些没有,哪些文件已更改并需要重新索引?
另外,我可以停止此服务,然后在几天后启动它,它会继续工作。 它是否有自己的包含文件信息的数据库?
谢谢
【问题讨论】:
通常,索引服务使用WaitForSingleObject / WaitForMultipleObjects 在通过调用FindFirstChangeNotification 创建的句柄上保持在后台。如果您想支持可以关闭索引服务(或用于已经存在的目录),您绝对应该在每个文件上存储上次运行索引的时间戳。您可以将其与给定文件的LastWriteTime 进行比较。
编辑:您应该使用ReadDirectoryChangesW 和另一个异步索引文件的线程,以确保不会错过任何更改。您可以为每个要索引的文件生成新线程(昂贵)或使用作业队列和固定数量的工作线程(最好是 1 或 2 个)
【讨论】: