我有一项任务是使用像这样的行为来实现服务。 我的问题是:
索引服务如何记住已编入索引的文件以及哪些文件已更改且需要重新编制索引?
此外,我可以停止此服务,然后在几天后启动它,它继续工作。 它是否有自己的数据库,包含有关文件的信息?
谢谢
答案 0 :(得分:1)
通常,索引服务会在调用WaitForSingleObject / WaitForMultipleObjects
的句柄上使用FindFirstChangeNotification
保留在后台。如果您希望支持索引服务可以关闭(或用于已存在的目录),那么您肯定应该在每个文件上存储上次索引运行的时间戳。您可以将其与给定文件的LastWriteTime进行比较。
编辑:您应该使用ReadDirectoryChangesW和另一个异步索引文件的线程,以确保不会遗漏任何更改。您可以为每个要索引的文件(昂贵)生成新线程,或者使用作业队列和固定数量的工作线程(最好是1或2)