مهلة ويفوريكسيت لا تعمل


التعليمات البرمجية يشبه تقريبا هذا: كما ترون، التعليمات البرمجية يبدأ عملية 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 وأطفالها الممكنة. لقد كنت تقاتل هذه القضية لفترة الآن وحاول العديد من الطرق المختلفة لإصلاحه ولكن لا يمكن. باسكالي وهت بلدي التطبيق لا يدعو ملف جافا لتحميل التطبيق على الجهاز. أثناء تحميله الطباعة إلى مربع ريشتكست، ثم أود الانتقال إلى الملف التالي. المشكلة التي تواجهها هي أنه في حين يتم تحميل الملف الأول، يحاول 2ND تحميل القضايا التي القضايا. لقد حاولت الانتظار للخروج ولكن إذا كنت تفعل ذلك، ثم لا يتم الحصول على بيانات الإخراج مكتوبة إلى مربع النص الغنية. أي أفكار حاولت وضع الانتظار للخروج في أماكن مختلفة كثيرة، ولكن لا يبدو للعمل. اثنين من الأساليب أدناه كتابة ستدوت أو خطأ إلى الحقل ريتستكست. اي فكرة يمكن ان تكون رائعة. باسكالي أحتاج إلى عملية للخروج، حتى ذلك الحين يمكنني الاستمرار في التفكير في فورلوب لتحميل الملف التالي. هل تحصل على أي نوع من رسالة خطأ يبدو لي مثل الحجج الخاصة بك هي - Xmx512M - jar. في عداد المفقودين مسافة بعد الخيار سطر الأوامر - jar. وهذا يمكن أن يسبب ذلك لمجرد الخروج على الفور بسبب عدم القدرة على فهم الأمر. أيضا، كما اقترح M. Babcock، نقل الأسلوب لادب خارج مؤشر ترابط واجهة المستخدم، وتأكد من التفاف جزء التحميل في سيمافور، بهذه الطريقة يتم تحميل ملف واحد فقط في وقت واحد واجهة المستخدم يمكن أن تستمر في القيام بما يحتاج لكى يفعل. نداش سبيدراك 9 فبراير 12 في 15:29 حذر من أن يكون هذا كوثاكيشكوت إلى حد ما في أن you39re لا تزال حجب مؤشر واجهة المستخدم، ولكن you39re ضخ الأحداث يدويا من خلال قائمة انتظار الرسالة. هذه ليست أفضل الممارسات، وسوف يوصي معظم المطورين ضد ذلك. الخيار الأفضل هو رمي رمز التحميل في مؤشر ترابط منفصل. نداش سبيردريك 9 فبراير 12 الساعة 15:54

Comments