كيف يعمل نظام FileSystemWatcher على دليل أجهزة الكمبيوتر الأخرى؟

StackOverflow https://stackoverflow.com/questions/627068

سؤال

شيء يثير اهتمامي ولا أجد أي مورد في هذا الشأن.

كيف يمكن لـ FileSystemWatcher معرفة متى يتم إنشاء/إزالته/تغييره/تغييره/تغييره؟

اعتقدت أن هذا عمل مع الاقتراع ، (استطلاعات المراقب الخادم للتحقق من التحديث) ، ولكن بعد التحقق من نشاط الشبكة باستخدام Wireshark ، رأيت أن الاقتراع لم يتم استخدامه. هل يستخدم بروتوكول SMB نمط مراقب/مراقب؟

في هذه الحالة ، كيف يمكن للخادم معرفة متى لا يلاحظه العميل بعد الآن؟

ما هي النتيجة عندما تقع الشبكة أثناء الملاحظة وتعود بعد ذلك مباشرة؟

يبدو أن استخدام FileSystemWatcher على جهاز كمبيوتر آخر سهل للغاية ...

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

المحلول

يبدو أن استخدام FileSystemWatcher على جهاز كمبيوتر آخر سهل للغاية ...

انها نوعا ما. واجهة برمجة التطبيقات الأساسية - ReadDirectoryChanges() - يفتح اتصال الخادم ، وهو مسؤول عن الاستجابة عندما يتغير شيء ما. إذا تم إسقاط هذا الاتصال لسبب ما ، أو تصطدم بحد اتصال نظام التشغيل الذي تتصل به ، فلن تحصل على إشعارات.

لقد وجدت أنه أكثر موثوقية للاستطلاع بشكل دوري (مع بعض الفاصل الزمني الطويل) ، والاستخدام FileSystemWatcher فقط كوسيلة للاستجابة بسرعة للتغييرات بين استطلاعات الرأي.

نصائح أخرى

أعتقد أن FileSystemWatcher يستخدم نمط المراقب/الملاحظة استنادًا إلى واجهة برمجة تطبيقات Win32 الأساسية. لست متأكدًا من الأحداث الفعلية ، ولكن من المفترض عند تهيئة كائن ملفات fileystemwatcher لمشاهدة مسار الشبكة وتعيين خاصية EnableraIningEvents التي ترفقها خلف الكوالي كان المجلد على نفس الكمبيوتر.

في نمط تصميم المراقب ، لا يكون الموضوع (الذي يمكن ملاحظته) على دراية بعدد أو أنواع المراقب ، وبالتالي فإن النقطة المتعلقة بالكمبيوتر الأخرى التي تعرف متى لم تعد FSW مشاهدتها غير ذات صلة.

إذا انخفضت الشبكة خلال حدث يتم رفعه ، فهذا جزء من gotcha - سيتعين على شخص آخر مساعدتك هناك.

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