سؤال

أنا أعمل في مشروع MFC حيث أحتاج إلى حلقة منفصلة سيتم تشغيلها باستمرار أو مرة واحدة كل بضع ثوان ، وفي كل مرة قد تحتاج أو لا تحتاج إلى تشغيل مربع حوار للحصول على بعض المدخلات من المستخدم. كنت أفكر في استخدام AFXBegInThread ، ولكن من ما قرأته حول هذا الموضوع ، فإنه لا يعمل حقًا مع حلقة مستمرة.

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

المحلول

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

إذا كان كل ما تريده هو إشارة من نوع ما تطلق النار كل بضع ثوانٍ ، فإن ما تريده هو مؤقت. قم بتعيين الموقت لفترة الموقت التي تريدها ، وعندما تمت معالجة موضوعك الرئيسي لرسالة WM_Timer المطلوبة ، يمكنك الظهور بحوار حوار والقيام بشيء ما.

إذا كنت تريد أن يقوم مؤشر ترابط العامل الخاص بك ببعض الأعمال ، والتي قد تتضمن أو لا تتضمن طلب المستخدم للحصول على معلومات ، فأنت تريد أن تبحث عن استخدام موضوعك postmessage () لإرسال رسالة إلى مؤشر الترابط الرئيسي ، قم بمعالجة هذه الرسالة Int He Main Thread عن طريق سؤال المستخدم للبيانات ، ثم إرسال إشارة إلى مؤشر ترابط العامل مع بيانات الإدخال. طريقة واحدة لإنجاز الشيء الأخير هو عن طريق الاتصال QueueUserAPC () من الخيط الرئيسي مع مقبض مؤشر ترابط العامل ومؤشر إلى وظيفة تقوم بشيء مع البيانات التي تم إدخالها حديثًا.

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