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