このような動作でサービスを実装するタスクがあります。私の質問は:
Indexing Serviceは、どのファイルがすでにインデックスに登録されているか、どのファイルが変更され、それらを再インデックスする必要があるかをどのように記憶していますか?
また、このサービスを停止して数日後に開始することもできますが、引き続き機能します。ファイルに関する情報を含む独自のデータベースがありますか?
ありがとうございました
このような動作でサービスを実装するタスクがあります。私の質問は:
Indexing Serviceは、どのファイルがすでにインデックスに登録されているか、どのファイルが変更され、それらを再インデックスする必要があるかをどのように記憶していますか?
また、このサービスを停止して数日後に開始することもできますが、引き続き機能します。ファイルに関する情報を含む独自のデータベースがありますか?
ありがとうございました
WaitForSingleObject / WaitForMultipleObjects
通常、indexing-serviceは、の呼び出しによって作成されたon Handlesを使用して、バックグラウンドに留まりますFindFirstChangeNotification
。インデックスサービスをシャットダウンできる(または既存のディレクトリで使用できる)ことをサポートしたい場合は、最後に実行したインデックスのタイムスタンプをすべてのファイルに確実に保存する必要があります。これを、指定されたファイルのLastWriteTimeと比較できます。
編集:変更を見逃さないように、ReadDirectoryChangesWと、ファイルに非同期でインデックスを付ける別のスレッドを使用する必要があります。インデックスを作成するためにすべてのファイルに新しいスレッドを生成するか(高価)、ジョブキューと一定量のワーカースレッド(できれば1または2)を使用できます。