C 3.5 وينفورمز التطبيق. لدي جهاز توقيت أن يطلق كل 30 ثانية على موضوع منفصل (كل ما يفعله هو كتابة سلسلة من النص إلى إطار إخراج فس). لدي أيضا مؤشر ترابط آخر ينتظر عملية معينة لإنهاء إذا كان يبدأ. على سبيل المثال winword. exe. في هذا الموضوع لدي هذا الرمز: وسوف الجلوس هناك وانتظر winword. exe للخروج. هذا يعمل بشكل جيد. ومع ذلك، في حين أنه يجلس هناك في انتظار winword. exe للخروج، الموقت 30 ثانية على مؤشر ترابط منفصل تماما (الذي يرسل النص إلى إطار الإخراج) أبدا تشغيل. إذا كنت انتظر 3 دقائق (وبالتالي فإن توقيت آخر يجب تشغيل 6 مرات في هذه المرحلة، لكنه لا في حين ويتفوريكسيت () ينتظر)، ثم أخرج winword. exe كل من المفاجئ بلدي الموقت الآخر يبدأ تشغيل 6 مرات في وقت واحد . هو مثل هناك تراكم الحدث الموقت وكل من المفاجئ يريد تشغيل كل شيء في نفس الوقت. لماذا يبدو أن p. WaitForExit () يحظر تطبيقي بالكامل على الرغم من أنه قد تم تنفيذه من مؤشر ترابط منفصل في تطبيقي (وليس مؤشر ترابط واجهة المستخدم الرئيسي) إديت: يس إيت إن ذي سيبارات ثرياد. هنا هو رمز أن أستخدم لإطلاقه: هنا هو أسلوب بروسيسشيك () أن لدي: لديك فكرة الصحيح بيتر، تفسير خاطئ. يقوم كالينغ Control. Invoke بتشغيل المندوب المحدد على مؤشر ترابط واجهة المستخدم ويقوم بحظر سلسلة محادثات الاتصال حتى يكمل مؤشر ترابط واجهة المستخدم تنفيذه. ما يحدث في التعليمات البرمجية أعلاه هو أن p. WaitForExit يحظر كل من مؤشر ترابط واجهة المستخدم (بسبب تنفيذها على مؤشر ترابط واجهة المستخدم) وخيط الترابط (الذي ينتظر على مؤشر ترابط واجهة المستخدم). نداش تيرجيفر 30 يوليه 12 في 17:49 فراكسيس يمكنك استخدام بيجينفوك ولكن ذلك لا يزال يدعو ويتفوريكسيت على مؤشر ترابط واجهة المستخدم وحظره. إذا كانت التعليمات البرمجية التي تستدعي استدعاء حاليا في مؤشر ترابط الخلفية يمكنك استدعاء ويتفوريكسيت مباشرة مما يؤدي إلى حظر مؤشر ترابط الخلفية بدلا من مؤشر ترابط واجهة المستخدم. إذا قدمت بعض التفاصيل حول ما تحاول فعله بالفعل، قد يكون شخص ما قادرا على تقديم المزيد من التفاصيل. نداش بيتر ريتشي يوليو 30 12 في 12: 52 إيلينا: شكرا لإجابتك. هناك بعض الملاحظات في الجزء السفلي من مستند مسن هذا (msdn. microsoften - أوسليبراريهليب) التي تحذر حول ديادلوكس المحتملة إذا قرأت إلى نهاية كل من ستدوت إعادة توجيه و ستدر تيارات بشكل متزامن. IT39s من الصعب معرفة ما إذا كان الحل الخاص بك هو عرضة لهذه المسألة. أيضا، يبدو أنك تقوم بإرسال العملية 39 ستدوتستدر إخراج الحق في العودة كمدخلات. لماذا ا. ) نداش ماتيو بيات سيب 26 16 في 4:42 هذا هو أكثر حداثة تنتظر، مكتبة مكتبة موازية تبل (تبل) حل قائم على 4.5 وما فوق. مثال الاستخدام أجاب التنفيذ أكتوبر 5 16 في 10:54 أنا شيء أن هذا هو نهج بسيط وأفضل (نحن لسنا بحاجة أوتوريزيتيفنت): أجاب 14 يونيو 12 في 14:29 صحيح، ولكن mustn39t كنت تقوم به. فيلنام المسار quggsci. exequot كوت لوت obeycommand. txtquot لتبسيط التعليمات البرمجية الخاصة بك أو ربما شيء ما يعادل الأمر كوتشو كوت المسار quggsci. exequot إذا كنت حقا don39t تريد استخدام ملف obeycommand. txt منفصل. نداش اميت نيدو يونيو 4 13 في 22:03 الحل الخاص بك لا تحتاج أوتوريزيتيفنت ولكن لك الاستطلاع. عند إجراء الاستطلاع بدلا من استخدام الحدث (عندما تكون متاحة) ثم كنت تستخدم وحدة المعالجة المركزية دون سبب والتي تشير إلى أنك مبرمج سيئة. الحل الخاص بك هو سيء حقا بالمقارنة مع الآخر باستخدام أوتوريزيتيفنت. (لكنني لم أعطيك -1 لأنك حاولت المساعدة). نداش إيريك أويليت نوف 7 14 في 18:38 كنت تواجه نفس المشكلة، ولكن السبب كان مختلفا. ومع ذلك فإنه يحدث تحت ويندوز 8، ولكن ليس تحت ويندوز 7. يبدو أن السطر التالي قد تسبب في المشكلة. كان الحل عدم تعطيل وسشليكسكيوت. تلقيت الآن نافذة منبثقة شل، غير المرغوب فيها، ولكن أفضل بكثير من البرنامج في انتظار لا شيء معين أن يحدث. لذلك أضفت العمل التالي حول ذلك: الآن الشيء الوحيد الذي يزعجني هو لماذا يحدث هذا تحت ويندوز 8 في المقام الأول. أجاب 13 يناير 15 في 10:35 حاولت أن تجعل فئة من شأنها أن تحل مشكلتك باستخدام تيار غير متزامن قراءة، من خلال الأخذ في الاعتبار مارك بييرز، روب، ستيفيفاي الأجوبة. القيام بذلك أدركت أن هناك خلل المتعلقة غير متزامن الناتج إخراج تيار قراءة. لا يمكنك القيام بذلك: سوف تتلقى System. InvalidOperationException. لم تتم إعادة توجيه ستانداردوت أو لم تبدأ العملية بعد. ثم عليك أن تبدأ إخراج غير متزامن قراءة بعد بدء العملية: القيام بذلك، وجعل حالة سباق لأن تيار الإخراج يمكن أن تتلقى البيانات قبل تعيينه إلى غير متزامن: ثم بعض الناس يمكن أن أقول أن لديك فقط لقراءة تيار قبل تعيينه إلى غير متزامن. ولكن نفس المشكلة تحدث. سيكون هناك حالة سباق بين قراءة متزامن وتعيين تيار في وضع غير متزامن. لا توجد طريقة للحصول على قراءة غير متزامنة آمنة من تيار الإخراج من عملية في الطريقة الفعلية وقد تم تصميم عملية و بروسيسستارتينفو. ربما كنت أفضل باستخدام قراءة غير متزامن مثل اقترح من قبل المستخدمين الآخرين لحالتك. ولكن يجب أن تكون على علم بأنك يمكن أن تفوت بعض المعلومات بسبب حالة السباق.
Comments
Post a Comment