Friday 22 December 2017

Redirectstandardoutput - waitforexit - ج #


لدي التطبيق الذي يدعو عملية أخرى في إطار الأوامر وهذه العملية لديها تحديث احصائيات أن الإخراج إلى نافذة وحدة التحكم. اعتقدت أن هذه عملية بسيطة إلى حد ما ولكن لا أستطيع أن يبدو للحصول عليه للعمل. أنا في عداد المفقودين شيء من الناحية المثالية ما أود هو كما تغيرات الانتاج في تلك العملية أنا ضرب أو البيانات تأتي في القارئ أن أحصل على الأحداث قبالة ذلك. أي مساعدة ستكون كبيرة، أشعر أن هذا هو سؤال مبتدئ ولكن يبدو أن هناك شيئا مفقودا. سأل 17 يوليو 09 في 22:33 إيف شهدت هذا من قبل. في بعض الأحيان، الطريقة التي تكون فيها عملية استدعاء مخرجات إلى وحدة التحكم غير متوافق مع هذا النوع من إعادة توجيه الإخراج. إيف كان محظوظا بما فيه الكفاية في هذه الحالة لتكون قادرة على تعديل العملية الخارجية للالتفاف على هذا. قد تحاول تشغيل التعليمات البرمجية الخاصة بك على عملية أخرى أن الإخراج إلى وحدة التحكم، ومعرفة ما إذا كان يعمل بشكل صحيح. يقرأ عن الحق لي الآن. ذهبت وسحبت كتلة التعليمات البرمجية إيف تستخدم للقيام بذلك. هذا هو في التطبيق وف الذي يعيد إخراج العملية إلى النافذة. لاحظ ملزم الحدث. وبما أن هذا هو وف يجب أن استدعاء دعوتي لكتابة البيانات بها. منذ كنت تشعر بالقلق قلق حول حظر، أو يجب أن تكون قادرة على ببساطة استبدال ذلك مع: نأمل أنه يساعد من المثير للاهتمام لا يمكن قراءة من الإخراج القياسية والخطأ القياسي في نفس الوقت: إذا قمت بإعادة توجيه كل من الإخراج القياسية والخطأ القياسي ثم حاول قراءة كل من ، على سبيل المثال باستخدام كود C التالي. سترينغ الإخراج p. StandardOutput. ReadToEnd خطأ سلسلة (p )StandardError. ReadToEnd () في هذه الحالة، إذا كانت عملية الطفل يكتب أي نص إلى خطأ قياسي فإنه سيتم حظر العملية، لأن العملية الأم لا يمكن قراءة من خطأ قياسي حتى يكون القراءة النهائية من الانتاج القياسية. ومع ذلك، لن تتم قراءة العملية الأصل من الإخراج القياسي حتى تنتهي العملية. الحل الموصى به لهذا الوضع هو إنشاء اثنين من المواضيع بحيث التطبيق الخاص بك يمكن قراءة الإخراج من كل تيار على مؤشر ترابط منفصل. إيلينا: شكرا لإجابتك. هناك بعض الملاحظات في الجزء السفلي من مستند مسن هذا (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. لم تتم إعادة توجيه ستانداردوت أو لم تبدأ العملية بعد. ثم عليك أن تبدأ إخراج غير متزامن قراءة بعد بدء العملية: القيام بذلك، وجعل حالة سباق لأن تيار الإخراج يمكن أن تتلقى البيانات قبل تعيينه إلى غير متزامن: ثم بعض الناس يمكن أن أقول أن لديك فقط لقراءة تيار قبل تعيينه إلى غير متزامن. ولكن نفس المشكلة تحدث. سيكون هناك حالة سباق بين قراءة متزامن وتعيين تيار في وضع غير متزامن. لا توجد طريقة للحصول على قراءة غير متزامنة آمنة من تيار الإخراج من عملية في الطريقة الفعلية وقد تم تصميم عملية و بروسيسستارتينفو. ربما كنت أفضل باستخدام قراءة غير متزامن مثل اقترح من قبل المستخدمين الآخرين لحالتك. ولكن يجب أن تكون على علم بأنك يمكن أن تفوت بعض المعلومات بسبب حالة السباق.

No comments:

Post a Comment