سؤال

أنا على علم بأن في .صافي هناك ثلاثة الموقت أنواع (انظر مقارنة توقيت دروس في .NET Framework فئة مكتبة).لقد اختار الخيوط توقيت لأنواع أخرى يمكن أن ينجرف إذا كان الموضوع الرئيسي هو مشغول و أنا بحاجة إلى هذا أن تكون موثوق بها.

طريقة توقيت يعمل في السيطرة الموقت على موضوع آخر لذلك يمكن دائما وضع علامة جنبا إلى جنب مع العمل تبدأ الانتهاء من موضوع الوالدين عندما يكون غير مشغول.

المشكلة مع هذا الموقت في تطبيق وحدة تحكم هو أنه في حين أن توقيت تدق على طول على موضوع آخر الخيط الرئيسي لا تفعل أي شيء إلى إغلاق التطبيق.

حاولت إضافة while true حلقة, لكن الموضوع الرئيسي هو مشغول جدا عندما الموقت لا تنفجر.

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

المحلول

يمكنك استخدام شيء من هذا القبيل Console.ReadLine() لمنع الخيط الرئيسي لذلك الخلفية المواضيع (مثل توقيت المواضيع) لا تزال تعمل.يمكنك أيضا استخدام AutoResetEvent لمنع التنفيذ ، ثم (عند الحاجة) يمكنك استدعاء مجموعة() الأسلوب على أن AutoResetEvent كائن للافراج عن الموضوع الرئيسي.كما تضمن الإشارة إلى توقيت كائن لا تخرج من نطاق القمامة التي تم جمعها.

نصائح أخرى

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

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