C - المعايير الانتاج waitforexit - دوسنت - الانتظار


ابدأ استخدام process. Start لبدء ملف دفعي. يستخدم ملف الدفعي الأمر ستارت لبدء عدة برامج بالتوازي ثم الخروج. بمجرد الانتهاء من ملف الدفعي يصبح process. HasExited ترو و process. ExitCode يحتوي على رمز الخروج الصحيح. ولكن عندما أدعو process. WaitForExit () أنه يتعطل أبدا يعود. الجزء التالي من التعليمات البرمجية يوضح المشكلة. فإنه يخلق ملف دفعي، يبدأ ثم ثم يطبع: يجب أن ثم طباعة: لكنه لم يفعل (على الرغم من هاسكسيتد صحيح ولدينا بالفعل إكسيتكود). لقد لاحظت أن هذا يحدث فقط عندما يحتوي ملف دفعي على أوامر ستارت وعندما يتم إعادة توجيه الإخراج القياسي و أندور القياسية. لماذا ويتيفوريكسيت () لا يعود ما هي الطريقة الصحيحة للانتظار لمثل هذه العملية للخروج هل هو آمن لعملية استطلاع عادل. هاسكسيتد أو يمكن أن يؤدي إلى مشاكل أخرى بس. لقد لاحظت فقط أن استدعاء ويتفوريكسيت (100000) مع مهلة ضخمة (التي لا تنتهي بالتأكيد) يعود على الفور عند خروج العملية. غريب. دون مهلة أنها معلقة. هناك فرق أساسي عند استدعاء ويتفوريكسيت () دون مهلة، فإنه يضمن أن ستدوترر المعاد توجيهها إوف. وهذا يجعل متأكد من أنك 39 قراءة جميع الإخراج الذي تم إنتاجه من قبل هذه العملية. نحن can39t نرى ما كوتونوتبوتكوت يفعل، ولكن احتمالات عالية أنه ديادلوكس البرنامج لأنه يفعل شيئا مقرف مثل افتراض أن الموضوع الرئيسي الخاص بك هو الخمول عندما يكون عالقا في الواقع في ويتفوريكسيت (). نداش هانز باسانت نوف 3 14 في 12:06 ويبدو أن هذا قطعة أثرية (إد يقول علة) في تنفيذ محدد من التعامل مع غير المتزامن القائم على الحدث من ستانداردوتبوت و ستانداردرور. لاحظت أنه في حين كنت قادرا على تكرار المشكلة بسهولة، ببساطة عن طريق تشغيل التعليمات البرمجية التي قدمتها (مثال رمز ممتاز، بالمناسبة.))، فإن العملية لم يعلق في الواقع إلى أجل غير مسمى. بدلا من ذلك، عاد من ويتفوريكسيت () مرة واحدة كل من العمليات الطفل التي بدأت قد خرجوا أنفسهم. ويبدو أن هذا جزء متعمد من تنفيذ فئة العملية. على وجه الخصوص، في طريقة Process. WaitForExit ()، بمجرد الانتهاء من الانتظار على مقبض العملية نفسها، فإنه يتحقق لمعرفة ما إذا كان قد تم إنشاء قارئ إما ستدوت أو ستدر إذا كان الأمر كذلك، وإذا كانت قيمة المهلة ل ويتفوريكسيت ) نداء لانهائي (أي -1)، رمز ينتظر فعلا لنهاية تيار على القارئ (ق). يتم إنشاء كل قارئ منها فقط عندما يتم استدعاء الأسلوب بيجينوتبترادلين () أو بيجينيرورادلين (). و ستدوت والجداول ستدير هي نفسها ليست مغلقة حتى أغلقت عمليات الطفل. حتى الانتظار في نهاية تلك الجداول سوف كتلة حتى يحدث ذلك. أن يتفوريكسيت () يجب أن تتصرف بشكل مختلف اعتمادا على ما إذا كان أحد قد دعا إما من الأساليب التي تبدأ القراءة القائم على الحدث من تيارات أم لا، وخصوصا بالنظر إلى أن قراءة تلك التدفقات مباشرة لا يسبب ويتفوريكسيت () على التصرف بهذه الطريقة، يخلق عدم الاتساق في أبي الذي يجعل من الصعب فهمها واستخدامها. في حين إد شخصيا استدعاء هذا الخلل، وأعتقد أن من الممكن أن منفذي (ق) من الطبقة العملية على بينة من هذا التناقض وخلقها عن قصد. في أي حال، فإن العمل حول سيكون لقراءة ستانداردوتبوت و ستانداردرور مباشرة بدلا من استخدام جزء الحدث القائم على أبي. (على الرغم من بطبيعة الحال، إذا كان رمز تلك كانت تنتظر على تلك التدفقات، واحد سوف نرى نفس السلوك حظر حتى الطفل يعالج قريبة). على سبيل المثال (C، لأنني لا أعرف F كافية بما فيه الكفاية لصف مثال رمز مثل هذا معا بسرعة :)): نأمل أن العمل أعلاه حول أو شيء من هذا القبيل سوف تعالج القضية الأساسية كنت قد واجهت. شكرا لي للمعلق نيلز فورغارد كريستنسن لتوجيهي إلى خطوط إشكالية في طريقة ويتفوريكسيت ()، حتى أتمكن من تحسين هذه الإجابة. بناء على فهمي، لا يعني الأسلوب Process. WaitForExit (int32) للخروج عند مهلة. يتم استخدام التحميل الزائد ويتفوريكسيت (Int32) لجعل الانتظار مؤشر الترابط الحالي حتى ينتهي العملية المقترنة. يؤدي هذا التحميل الزائد إلى توجيه مكون العملية إلى انتظار مقدار محدود من الوقت لإنهاء العملية. إذا لم يتم إنهاء العملية المقترنة بنهاية الفترة الزمنية بسبب رفض طلب الإنهاء، يتم إرجاع فالس إلى إجراء الاستدعاء. يمكنك تحديد رقم سلبي (لانهائي) لمدة ميلي ثانية. والعملية. سوف يتصرف ويتفوريكسيت (Int32) نفس الزائد ويتفوريكسيت إذا كنت ترغب في إغلاق العملية، يمكنك استخدام التعليمات البرمجية التالية للقيام كما تريد: فين جين مسفت مسن دعم المجتمع ردود الفعل لنا الحصول على أو طلب رمز عينة من ميكروسوفت يرجى تذكر لوضع علامة على الردود كردود إذا كانت تساعدها وتلغيها إذا لم تقدم أي مساعدة. الاثنين، 20 يونيو 2011 6:26 ص نعم، ولكن لا process. WaitForExit (Int32) التي لا تعمل. هذه الوظيفة تعمل بشكل جيد للغاية مع الكثير من الملفات التنفيذية. المشكلة هي أن هذه الوظيفة لا تعمل مع بسيكسيك وإعادة توجيه الإخراج القياسية. عملها فقط دون استخدام إعادة توجيه أو دون استخدام مهلة. الاثنين 20 يونيو 2011 6:41 ص أنا لست متأكدا لماذا تريد استخدام كيورك ولماذا تريد إعادة توجيه فقط عند بدء العملية حاول التعليمات البرمجية التالية: لتعديله كما طلبك. يمكن أن تعمل بشكل جيد. هنا هي النتيجة: يعد الوقت (120000) قمت بتعيين، والمزيد من إمفورميشن ستحصل. لذلك أقترح عليك استخدام الأسلوب process. WaitForExit () بدون معلمات. شكر. فين جين مسفت مسن دعم المجتمع ردود الفعل لنا الحصول على أو طلب رمز عينة من ميكروسوفت يرجى تذكر لوضع علامة على الردود كاجوبة إذا كانت تساعد وإلغاء تحديد لهم إذا لم تقدم أي مساعدة. الاثنين، 20 يونيو، 2011 9:42 ص شكرا لمساعدتكم. إذا كنت تستخدم process. WaitForExit () دون وقت، وعملها بشكل جيد للغاية ولدي الإخراج الكامل. ولكن يمكنني استخدام بسيكسيك لتشغيل مجموعة الإعداد عن بعد، وهذا الإعداد يمكن تجميد العملية، لذلك أنا بحاجة إلى مهلة وأنا لا أريد أن استخدام الخيار - d (لا تنتظر عملية لإنهاء) لأن لدي الخطوات التالية لتشغيل بعد وانشاء. الاثنين، يونيو 20، 2011 10:01 آم ماذا عن تحديد الوقت أكثر أطول يرجى وضع علامة عليه كجواب، إذا كان يساعد على حل مشكلتك. الأربعاء، 22 يونيو، 2011 7:07 ص لقد حاولت مع 300000، نفس السلوك. على الرغم من أن عملية الإعداد بلدي تأخذ أقل من 60000 المشكلة ليست مهلة المدة. المشكلة هي أن إعادة توجيه الإخراج القياسية والتنفيذ مع مهلة تجميد بسيكسيك العملية (فقط بسيكسيك، وليس آخر.) الأربعاء 22 يونيو 2011 7:19 ص مرحبا، وأنا أعلم أن هذا هو مجرد وظيفة قديمة، ولكن كان لي أن نفس الخطأ عند محاولة تنفيذ عملية باستخدام التحرير والسرد ويتفور () 43 ريديركتستانداردوتبوت وسوف شنق إلى أجل غير مسمى. لقد وجدت حلا لمشكلتي في مشاركة مدونة من لوسيان ويسشيك، مسفت. إذا كنت قد وجدت حلا، أو أي شخص آخر يبحث أن مشكلة معينة يجب أن نلقي نظرة على هذا العنوان: هنا هو نسخة من التعليمات البرمجية له ترجم تقريبا في C. الأربعاء 30 نوفمبر 2011 10:23 م مايكروسوفت تجري استطلاع على الانترنت لفهم رأيك لموقع مسن على الويب. إذا اخترت المشاركة، سيتم تقديم الاستبيان عبر الإنترنت لك عند مغادرة موقع مسن على ويب. هل ترغب في المشاركة

Comments