سؤال

لدي مهمة لتنفيذ الخدمة مع سلوك مثل هذا. سؤالي هو:

كيف تتذكر خدمة الفهرسة ما هي الملفات التي تم فهرستها بالفعل وما لا ، وما هي الملفات التي تغيرت وتحتاج إلى إعادة الفحص؟

أيضًا ، يمكنني إيقاف هذه الخدمة ثم بدءها بعد بضعة أيام ، تستمر في العمل. هل لديها قاعدة بيانات خاصة بها مع معلومات حول الملفات؟

شكرًا لك

هل كانت مفيدة؟

المحلول

عادة ما يبقى خدمة الفهرسة في الخلفية باستخدام WaitForSingleObject / WaitForMultipleObjects على المقابض التي أنشأتها المكالمات إلى FindFirstChangeNotification. إذا كنت ترغب في دعم أن يتم إيقاف تشغيل خدمة الفهرسة (أو استخدامها في دليل موجود بالفعل) ، فيجب عليك بالتأكيد تخزين الطابع الزمني لآخر فهرس يعمل على كل ملف. يمكنك مقارنة هذا بـ LastWriteTime من الملف المحدد.

تحرير: يجب أن تستخدم ReadDirectoryChangesw وخيط آخر يقوم بفهرسة الملفات بشكل غير متزامن للتأكد من عدم تفويت أي تغييرات. يمكنك إما أن تفرخ مؤشرات ترابط جديدة لكل ملف للفهرس (باهظ الثمن) أو استخدام قائمة انتظار وظيفة ومبلغ ثابت من مؤشرات الترابط العامل (1 أو 2 ويفضل)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top