إيلينا: شكرا لإجابتك. هناك بعض الملاحظات في الجزء السفلي من مستند مسن هذا (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. لم تتم إعادة توجيه ستانداردوت أو لم تبدأ العملية بعد. ثم عليك أن تبدأ إخراج غير متزامن قراءة بعد بدء العملية: القيام بذلك، وجعل حالة سباق لأن تيار الإخراج يمكن أن تتلقى البيانات قبل تعيينه إلى غير متزامن: ثم بعض الناس يمكن أن أقول أن لديك فقط لقراءة تيار قبل تعيينه إلى غير متزامن. ولكن نفس المشكلة تحدث. سيكون هناك حالة سباق بين قراءة متزامن وتعيين تيار في وضع غير متزامن. لا توجد طريقة للحصول على قراءة غير متزامنة آمنة من تيار الإخراج من عملية في الطريقة الفعلية وقد تم تصميم عملية و بروسيسستارتينفو. ربما كنت أفضل باستخدام قراءة غير متزامن مثل اقترح من قبل المستخدمين الآخرين لحالتك. ولكن يجب أن تكون على علم بأنك يمكن أن تفوت بعض المعلومات بسبب حالة العرق. استخدام process. BeginOutputReadLine يمكن أن يؤدي إلى فقدان خطوط ستدوت 12219 عند كتابة التعليمات البرمجية التي تخلق عمليات الطفل ويحتاج إلى التقاط ستدوت، لقد وجدت أن خطوط الانتاج يذهب في عداد المفقودين بعد الشرط: الكثير من التوازي. عمليةStartInfo. RedirectStandardOutput ترو Process. OutputDataReceived كولكتلينس (أي باستخدام التدفق غير المتزامن) process. BeginOutputReadLine () Process. WaitForExit (int. MaxValue) لاحظ أن تمرير -1 (مدة زمنية غير محدودة) إلى ويتفوريكسيت لا يسبب خطوط مفقودة (على أساس بلدي الاختبار). لقد خلقت التطبيق التجريبي قليلا للقيام بذلك. و ريبروس على كل netcoreapp1.0 و net45. processredirect. zip. مجرد استخدام دوتنيت تشغيل لمحاولة بها. أن يقال، يمكنك التقاط ستدوت باستخدام process. StandardOutput (وهو سترمريدر). ولكن لاستهلاك هذا بشكل غير متزامن وأمان تحتاج إلى استخدام ثريادستاسكس الخلفية. وبعبارة أخرى: ستدوت التقاط طريقة باستخدام مهلة لانهائية وأعتقد أن هذه مشكلة لأن من السهل جدا أن خطوة إلى هذا الخلاف. استخدام الأحداث لالتقاط الانتاج مريحة للغاية لأنك لا داعي للقلق حول جعل المواضيع الخلفية أو المهام. أيضا، يوصي الإنترنت هذه الطريقة: لقد حاولت هذا فقط على ويندوز. نيت فريميورك 4.5 و كور (netcoreapp1.0). أيضا، كل هذه المعلومات تتعلق ستدوت، ولكن أتصور ستدير لديه نفس المشكلة. معلومات دوتنيت بلدي هو: إيف تحديث التطبيق اختبار لدعم أنظمة غير ويندوز (باستخدام الصدى): processredirect2.zip. النتائج هي نفسها ل ويندوز، لينكس، وماك أوس X. جولفرهاجين. لأفضل أو ما هو أسوأ، ما كنت رؤية هو تصميم موثق. يضمن هذا التحميل الزائد أن جميع عمليات المعالجة قد اكتملت، بما في ذلك التعامل مع الأحداث غير المتزامنة للإخراج القياسي المعاد توجيهه. يجب استخدام هذا التحميل الزائد بعد إجراء مكالمة إلى التحميل الزائد ويتفوريكسيت (Int32) عند إعادة توجيه الإخراج القياسي إلى معالجات الأحداث غير المتزامنة. عند إعادة توجيه الإخراج القياسي إلى معالجات أحداث غير متزامنة، فمن الممكن أن معالجة الإخراج لم تكتمل عند إرجاع هذه الطريقة. لضمان اكتمال معالجة الحدث غير المتزامن استدعاء الزائد ويتفوريكسيت () الذي لا يأخذ أي معلمة بعد تلقي صحيح من هذا التحميل الزائد. يمكنك أن ترى هنا أن التعليمات البرمجية صراحة لا تنتظر الإخراج المعاد توجيهها لإكمال إذا تم تمرير مهلة غير لانهائية: وقال هذا، وأنا لا أعرف لماذا تم تصميمه بهذه الطريقة. جلفيرهاجين باستخدام ويتفوريكسيت دون مهلة بعد الزائد أخرى يجب إلغاء حظر لك، كما هو موضح في المستندات. وإغلاق هذه المسألة، يرجى إعادة فتحها إذا كانت هناك حاجة إلى مزيد من المساعدة.
No comments:
Post a Comment