Sunday 24 December 2017

Waitforexit - hangsim


في تطبيق وحدة التحكم، ويندوز 10، فيسوال ستوديو 2015. نيت 4.6 أسميه طريقة واحدة في الرئيسية تسمى تيبروسيس. بناء وضع التصحيح، إذا كنت تشغيل التطبيق دون تصحيح ذلك يطبع النص الصحيح: اضغط على أي مفتاح للمتابعة. إذا كنت تشغيل التطبيق مع التصحيح ينتظر لمدة 3 ثوان قبل الطباعة خطأ كاذبة خطأ كاذبة هذا هو مجرد تبسيط المشكلة الحقيقية، هذا الرمز هو العمود الفقري لبعض التعليمات البرمجية المعقدة التي تتوقف أيضا في الإفراج دون تصحيح الأخطاء ل md5sums. exe، ولكن يعمل لبعض الآخرين البرامج. كود كوبلكس أيضا معلقة على فار بروك. وايتفوريكسيت (مهلة) حتى مهلة كما في المثال المرفق. من ناحية أخرى هذا التبسيط سوف تعمل في الإفراج دون المصحح. أيضا، بدأت كل هذه المشاكل مع ويندوز 10، على ويندوز 7 كل شيء يعمل بشكل جيد. إديت غير قادر على فهم لماذا md5sums. exe يسبب مشاكل، وإذا كنت تستخدم شيئا آخر أي. اسم الملف بينغ، حجج لوكالهوست كل شيء يعمل كما هو متوقع. EDIT2 توقف برنامج بلدي معقدة العمل على ويندوز 10 (الإصدار - تشغيل دون التصحيح)، ولكن هذا المثال معلقة على ويندوز 7 أيضا (التصحيح - تشغيل مع التصحيح) طلب 17 مايو 16 في 13:21 هذه المشكلة لديها حل بسيط جدا. يمكنك فقط اكتشاف أي وقت مضى عندما تكتب رسالة خطأ ذات مغزى، واحدة أن يعطي المستخدم من البرنامج تلميحا جيدا ما ذهب بالضبط الخطأ. قاعدة جيدة من الإبهام لا تستخدم أبدا مهلة أقل من 10 ثانية على جهاز كمبيوتر محطة عمل، 20 ثانية على ملقم. إضافة المزيد إذا كان برنامج كومكومبلكوت. نداش هانز باسانت 17 مايو 16 الساعة 14:01 برنامج هانباسانت مجمع مهلة في أيام :) 20 ثانية مهلة didn39t تغيير السلوك لهذا المثال، على الرغم من أن test. txt هو ملف مع واحد فقط قصيرة من النص و Console. WriteLine (كوتيرور: 39 39، 39 39quot) ريتورن كوتيرور: 3939، 3939. a، b و c كلها كاذبة عند فشلها. ما من شأنه أن تكون رسالة خطأ ذات مغزى وندوباريف وند 17 مايو 14 في 14:29 كان هناك 3 المصيد لحل هذا: md5sums. exe في بعض الحالات يتوقف التنفيذ بعد الانتهاء عند إطلاقه مع الإعدادات الخاصة بي: اضغط إنتر للخروج هذا يمكن ملاحظتها إذا كريتينويندو هو تعيين إلى فالس و ستدوت، ستدير إعادة توجيه إزالة. هذا يمكن أن تكون ثابتة باستخدام - e التبديل: الخروج على الفور لا توقف قبل العودة. سيؤدي هذا إلى إصلاح جميع الحالات. ولكن كما لم أكن استخدام - e كان لي سلوك غير متناسقة اعتمادا على المصحح والنوافذ الإصدار. عند تشغيل دون وقفة التصحيح لم يتم تشغيل على الرغم من أن كافة الإعدادات كانت نفسها، ثم اضغط إنتر للخروج لم يكن في الإخراج. ولكن تشغيل مع التصحيح تسبب وقفة لمنع البرنامج حتى مهلة، حيث سوف md5sums شنق في إدارة المهام في انتظار إدخال. في وضع الإصدار، تشغيل دون التصحيح، على الرغم من توقف وقفة واضغط إنتر للخروج كان في الإخراج على ويندوز 7 عاد md5sums واستمر التنفيذ دون حجب وضرب مهلة. لم يكن هذا هو الحال على ويندوز 10 حيث md5sums يعيشون في مهاجم المهمة في انتظار إدخال واستمر البرنامج بعد ضرب مهلة. الرد أفاتار مايو 16 16 في 11: 16 الرمز يشبه تقريبا هذا: كما ترون، يبدأ التعليمات البرمجية عملية cmd. exe ويمر إليها الأمر أريد أن يتم تنفيذها. إعادة توجيه ستانداردرور و ستاندارتبوت من أجل قراءتها من التعليمات البرمجية. قراءة التعليمات البرمجية لهم قبل العملية. مكالمة ويتيفوريكسيت (مهلة) كما أوصت بها ميكروسوفت (المزيد عن هذا لاحقا). تنشأ المشكلة إذا كان الأمر الذي أرسله إلى cmd. exe لا ينتهي أبدا أو تعليق إلى أجل غير مسمى. في التعليمات البرمجية استخدم الأمر بينغ - t 8.8.8.8 الذي، بسبب الخيار - t، بينغ المضيف دون توقف. ماذا يحدث عملية cmd. exe جنبا إلى جنب مع الأمر بينغ - t أبدا يخرج ويغلق أبدا ستدوت تيار وهكذا التعليمات البرمجية الخاصة بك معلقة في خط الانتاج. StandardOutput. ReadToEnd () لأنه لا يمكن أن تنجح قراءة كل تيار. يحدث نفس الشيء أيضا إذا كان الأمر في ملف دفعي يعلق لأي سبب من الأسباب، وبالتالي فإن التعليمات البرمجية أعلاه يمكن أن تعمل بشكل مستمر لسنوات ثم تعليق فجأة دون أي سبب واضح. قبل أن أكتب أن الموصى بها لقراءة تيارات إعادة توجيه قبل العملية. استدعاء ويتفوريكسيت (المهلة)، حسنا هذا صحيح بشكل خاص إذا كنت تستخدم توقيع ويتفوريكسيت دون مهلة. إذا قمت بالاتصال بعملية. ويتفوريكسيت () قبل قراءة تيارات إعادة توجيه: التعليمات البرمجية 2: يمكنك تجربة حالة توقف تام إذا كان الأمر الذي تعلقه إلى cmd. exe أو العملية التي تتصل بها يملأ الإخراج القياسية أو خطأ قياسي. هذا لأن التعليمات البرمجية لدينا يمكن أن تصل إلى خطوط عملية الإخراج. ستانداردوتبوت. ريادتويند () في واقع الأمر عملية الطفل (الأمر بينغ أو ملف دفعي أو أي عملية كنت تنفذ) لا يمكن المضي قدما إذا برنامجنا لا يقرأ مخازن عازلة من تيارات وهذا لا يمكن أن يحدث لأن التعليمات البرمجية معلقة في الخط مع العملية. ويتفوريكسيت () والتي سوف تنتظر إلى الأبد لمشروع الطفل للخروج. الحجم الافتراضي لكل من تيارات هو 4096 بايت. يمكنك اختبار هذه الأحجام اثنين مع هذه الملفات دفعة: يكتب السيناريو الأول 4096 بايت إلى الإخراج القياسية والثانية إلى الخطأ القياسي. حفظ واحد من هذه في C: testbuffsize. bat وتشغيل عملية الاتصال البرنامج. ويتفوريكسيت () قبل عملية الإخراج. ستانداردوتبوت. ريادتويند () كما هو الحال في الكود 2. يمكنك القيام بذلك كتابة كوماندرسولت نتيجة إكسكوتشيلكوماندسينك (c: testbuffsize. bat، 1000) في السطر 13 من التعليمات البرمجية 1. التعليمات البرمجية لن تتوقف ولكن إذا قمت بكتابة بايت واحد أكثر في أي من تيارات اثنين سوف تجاوز حجم المخزن المؤقت جعل البرنامج تعليق. إذا كنت بحاجة إلى إعادة توجيه وقراءة الإخراج القياسية أو خطأ القياسى الحل الأفضل هو قراءتها بشكل غير متزامن. طريقة ممتازة للقيام بذلك يقترحها مارك بييرز في هذا الموضوع ستاكوفيرفلو كما آخر شيء يرجى ملاحظة أنه إذا كان مخارج عملية الطفل فقط لأنك تستخدم هذه العملية. ويتفوريكسيت (مهلة) التوقيع ويذهب في الواقع في مهلة يجب أن تقتل عملية cmd. exe وأطفالها المحتملين.

No comments:

Post a Comment