سؤال

لدي تطبيق ASP.Net يحتاج إلى تنفيذ بعض الأعمال بواسطة جهاز آخر.للقيام بذلك، سأترك رسالة في قائمة الانتظار مرئية لكلا الجهازين.عند الانتهاء من العمل يتم ترك رسالة في قائمة الانتظار الثانية.

أحتاج إلى تطبيق ASP.Net للتحقق من قائمة الانتظار الثانية بشكل دوري لمعرفة ما إذا كانت أي من المهام مكتملة.

أين هو أفضل مكان ولكن مثل هذه الحلقة؟Global.asax؟

أتذكر أنني قرأت في مكان ما أنه يمكنك الحصول على دالة يتم استدعاؤها بعد فترة زمنية.هل سيكون ذلك مناسبا؟

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

المحلول

لإنجاز المهام الدورية على asp.net، وجدت طريقتين مقبولتين:

  1. قم بإنشاء مؤشر ترابط أثناء Application_Start على global.asax، في حلقة زمنية (1) قم بالعمل (2) قم بإيقاف مؤشر الترابط لفترة زمنية.
  2. مرة أخرى في Application_Start، أدخل عنصرًا وهميًا في ذاكرة التخزين المؤقت لـ asp.net، وتنتهي صلاحيته في فترة زمنية معينة، ثم قم بمنح عنصر ذاكرة التخزين المؤقت هذا رد اتصال ليتم استدعاؤه عند انتهاء صلاحيته.في رد الاتصال هذا، يمكنك القيام بالعمل وإدراج عنصر ذاكرة التخزين المؤقت مرة أخرى بنفس الطريقة.

وفي كلتا الحالتين، تحتاج إلى التأكد من أن مؤشر الترابط الخاص بك يستمر في العمل حتى لو حدث خطأ.يمكنك وضع رمز استعادة في SessionStart وBeginRequest للتحقق من وجود مؤشر الترابط أو عنصر ذاكرة التخزين المؤقت لديك، وتجديده إذا حدث شيء ما له.

نصائح أخرى

وأفترض أن يتم ذلك على أساس منتظم، وأن بعض عملية أخرى يضع البنود المدرجة على قائمة الانتظار؟

إذا كان هذا هو الحال، كنت قد وضعت شيئا في Global.asax أنه في بداية التطبيق بإنشاء موضوع منفصل ان تراقب ببساطة قائمة الانتظار، هل يمكن استخدام جهاز توقيت أن يكون هذا موضوع النوم لX ثانية، ثم تحقق من النتائج.

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