Skip to main content

أوتبوتداتيفيسد بعد ويتوفوريكسيت


في انتظار عملية مع مهلة في.
على نفس المنوال من آخر مشاركة، قد نرغب في أن نكون أكثر ذكاء حول إطلاق عملية وانتظار خروجها.
خاصة إذا كانت هذه العملية جزءا من نظام حاسم مثل عملية البناء الخاص بك، كنت لا تريد عملية معلقة لتكون قادرة على التسبب بكامل نظام البناء لوقف القتلى في انها المسارات.
لحسن الحظ، عملية لديها زيادة في الوزن من ويتفوريكسيت الذي يأخذ مهلة عدد صحيح، وإرجاع منطقية - صحيح إذا كانت العملية خرجت، أو خطأ إذا لم العملية.
باستخدام هذه الوظيفة، يمكننا كتابة طريقة مثل هذا:
في هذا المقتطف، أوتباتداتاريسيفد هو الحدث الذي ينطلق عندما عملية يكتب البيانات إلى الإخراج القياسية، وإشارات بيجينأوتوبترادلين إلى أننا قد أعدنا الحدث ونحن على استعداد لبدء الاستماع لإخراج العملية.
استخدام نموذج الحدث في هذه الحالة يعني أننا لسنا بحاجة إلى أن يكون النص الناتج عملية كاملة في الذاكرة في أي نقطة واحدة في الوقت المناسب. كما يكتب عملية خط من النص، سيكون لدينا فقط هذا الخط في الذاكرة، وسوف تحصل جمع القمامة بعد أن نقوم بتحديث العداد لدينا.
هناك اثنين "غوتشا" في هذا المقتطف، على الرغم من.
الأول هو process. Kill (). هذا هو حالة السباق الكلاسيكي - بين الوقت يعود عملية لدينا من process. WaitForExit () ويستدعاء process. Kill ()، يمكن أن عملية الهدف الخروج. في هذه الحالة، تنص مسن أنه إذا استدعاء. Kill () على العملية التي خرجت بالفعل، سوف تحصل على إنفاليدوبيراتيونكسيبتيون.
يمكننا إصلاح هذا من خلال التعامل مع الاستثناء، مثل ذلك:
و "غوتشا" الثاني هو دقيق جدا، وربما كنت لن تجد ذلك حتى وظيفة لا يعود النتيجة التي تتوقعها، أو حتى تجلس وقراءة صفحة الوثائق بأكملها ل Process. WaitForExit (إنت). وتذكر شبكة مدسن أنه:
عند إعادة توجيه الإخراج القياسي إلى معالجات أحداث غير متزامنة، فمن الممكن أن معالجة الإخراج لم تكتمل عند إرجاع هذه الطريقة. لضمان اكتمال معالجة الحدث غير المتزامن استدعاء الزائد ويتفوريكسيت () الذي لا يأخذ أي معلمة بعد تلقي صحيح من هذا التحميل الزائد.
في هذه الحالة، فمن الممكن لوظيفتنا جيتنوموتبوتشارز لإرجاع قيمة تحتوي على أحرف أقل من إخراج العملية الفعلية، ما لم نسميه ويتفوريكسيت () مرة أخرى.
ومع أخذ ذلك في الاعتبار، تبدو وظيفتنا الآمنة النهائية الآن كما يلي:

أوتبوتداتيفيسد بعد ويتفوريكسيت
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
كيفية الانتظار لتيارات الإخراج عند استخدام process. WaitForExit مع مهلة الثابت.
وقد كان هذا النوع من "البحث الجنائي" مع نتائج مثيرة للدهشة للغاية - على الأقل بالنسبة لي.
نحن نقوم بتشغيل الأوامر الخارجية باستخدام كائن بروسيس. نحن التقاط الانتاج القياسية (والخطأ القياسية - لقد أزلت هذا من العينة لأسباب وضوح) بشكل غير متزامن. وقد تم الرد على هذا عدة مرات هنا. رمز يشبه هذا ويعمل بشكل جيد:
الآن، ماذا لو أردت إضافة مهلة صعبة إلى ويتفوريكسيت ()؟ سهلة: هناك نسخة مثقلة من ويتفوريكسيت (ميلي ثانية). لذا يجب أن تقوم مثل هذه الدعوة بما يلي:
الآن، وهذا يجعل التقاط الإخراج غير مكتملة في بعض الحالات.
هذا ليس سرا، على الأقل ليس لمطوري مايكروسوفت. بعد عدة ساعات من البحث، جئت إلى استنتاج مفاده أن شيئا ما يجب أن يكون خطأ في تنفيذ ويتفوريكسيت ل. لذلك أخذت نظرة على التعليمات البرمجية ووجدت هذا التعليق في تنفيذ مايكروسوفت:
وهنا سؤالي - ولقد فعلت بعض الجهد من التقييم دون نجاح:
كيف يمكن أن يكون مهلة صعبة على ويتفوريكسيت () وفي الوقت نفسه تأكد من أن التقاط الإخراج وحدة التحكم كاملة؟
هل حاولت استخدام الحدث أونكسيتد في فئة مشتقة؟ انظر الى هذا. قد يسمح لك ذلك باستخدام مهلة الانتظار بنفسك بدلا من تمريرها إلى ويتفوريكسيت.
Hans باسانت تعليقك موجه لي في الاتجاه الصحيح. في الواقع، أنا لا أعرف حقا كم من الوقت للنوم (). ولكن يمكنني إضافة كلب ساعة بسيطة لهذا الغرض. منذ أن تم الانتهاء من العملية بالفعل بحلول الوقت الذي يجب أن تبدأ في انتظار التقاطات المفقودة، يمكن أن نفترض أن الحدث أوتبوتداتاريسيتد يتم تشغيلها بشكل مستمر حتى تيار فارغ. لذلك كل ما فعلته كان إضافة ساعة توقيت وإعادة تشغيله في كل مرة في بداية طريقة الحدث أوتبوتداتاريسيتد. في التعليمات البرمجية الرئيسية، استبدال المكالمة إلى ويتفوريكسيت (60000) بواسطة التعليمات البرمجية التالية:

أوتبوتداتيفيسد بعد ويتفوريكسيت
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
كيفية قراءة لإنهاء عملية إخراج غير متزامن في C #؟
لدي مشكلة مع قراءة إخراج عملية واحدة بشكل غير متزامن في C #. لقد وجدت بعض الأسئلة الأخرى المماثلة على هذا الموقع لكنها لا تساعدني حقا. هنا هو ما أفعله:
جعل عملية جديدة تعيين ستارتينفو - FileName، وسيطات، كريتينويندو (ترو)، وسشليكسكيوت (فالس)، ريديركتستانداردوتوتبوت (ترو) إضافة معالج الأحداث إلى أوتبوتداتاريفسيف؛ بدء العملية، بيجينأوتوبترادلين ثم ويتفوريكسيت ().
أنه يعمل بشكل جيد ولكن إخراج عملية بدأت يكتب بعض النسب المئوية (٪) التي أريد الحصول عليها ولكن لا أستطيع منذ رمز بلدي يقرأ سطرا سطرا والنسب المئوية لا تظهر.
إليك الرمز الحالي لبرنامجي:
يبدو أن إخراج تيار القراءة بشكل غير متزامن هو كسر قليلا - لا يتم قراءة كافة البيانات قبل خروج العملية. حتى إذا قمت بالاتصال ب process. WaitForExit () وحتى إذا قمت بالاتصال ثم process. Close () (أو ديسبوس ()) لا يزال بإمكانك الحصول على الكثير من البيانات بعد ذلك. انظر alabaxblog. info/2018/06/redirectstandardoutput-beginoutputreadline-pattern-broken/ للحصول على كتابة كاملة، ولكن الحل هو أساسا لاستخدام أساليب متزامنة. لتجنب الجمود، على الرغم من، لديك لاستدعاء واحد منهم على مؤشر ترابط آخر:
بروسيس. ويتفوركسيت () سوف تنتظر حتى الانتهاء غير متزامن الناتج / خطأ تيار القراءة. لسوء الحظ هذا ليس صحيحا ل process. WaitForExit (المهلة) الزائد. هذا هو ما تقوم به فئة العمليات داخليا:
. لذلك سوف ننتظر للقراءة غير متزامن فقط إذا لم يكن هناك مهلة! لإصلاحه ببساطة استدعاء ويتفوريكسيت بارامتريليس () بعد ويتفوريكسيت (مهلة) عاد صحيح:
هناك عدد قليل من الأشياء التي تحصل في طريقها. قد يكون التطبيق وحدة التحكم باستخدام "باكباس" باكسباس الكتابة فوق النسبة المئوية، وربما لا بيغ إلى تيار ستدوت بعد كل الكتابة، و بيجينوتبترادلين ويفترض ينتظر لنهاية السطر قبل إعطائك البيانات.

الإرث المتعدد.
مشتقة من الكثير من الاشياء.
عملية أوسينك أوتبوتداتاريسيفد / إرورداتاريسيفد لديه عيب عند التعامل مع المطالبات.
System. Diagnostics. Process الدرجة - الجزء 2.
في الجزء 1 ناقشت المسألة عند استخدام ستدوت / ستدير إعادة توجيه وقراءتها بشكل متزامن، المخزن المؤقت الإخراج يمكن أن تصبح كاملة ومنع عملية الطفل على التالي "الكتابة". ثم يحدث توقف تام لأن العملية الأصل ينتظر على الطفل للخروج قبل قراءة البيانات من المخزن المؤقت، يتم حظر الطفل على الكتابة لأن المخزن المؤقت هو الكامل، وبالتالي الجمود. الجواب بسيط & # 8211؛ من الأفضل استخدام طريقة غير متزامن من قراءة البيانات من ستدوت / ستدر. هذه القضية هي المتوقعة وكان بلدي سيئة.
لست أنا بل أنت.
لقد واجهت مشكلة أخرى، والتي تبدو وكأنها نفس الجمود، واحد حيث افتراض سيئة في تنفيذ فئة عملية مايكروسوفت تسبب في نوع مختلف من الجمود بين العمليات الأم والطفل. لقد وجدت ذلك عندما دفعتني عملية طفلي إلى تأكيد النشاط المطلوب، انظر الشكل 1 للحصول على مثال.
انتهى موجه بدون خط جديد، وترك المؤشر في نهاية موجه (الذي هو منطقي، لماذا سيتم وضع المؤشر تحت المطالبة وليس بجانبه على الشاشة). انظر الشكل 2 على سبيل المثال رمز هذه المطالبة.
تم ترميز عملية ولي الأمر لتفقد البيانات ستدوت تلقى بشكل غير متزامن، وتبحث عن موجه. إذا / عندما تم استلام موجه، فإن العملية الأم تنبعث ردا على ستدين عملية الطفل. انظر الشكل 3.
ومع ذلك عندما قمت بتشغيل العملية الأم وعملية الطفل أرسلت موجه، النص لم يأت في الحدث أوتبوتداتاريسيتد ... وجلست العملية الأم على p. WaitForExit () خط إلى الأبد ... وكانت عملية الطفل في انتظار رد الذي لم يأت من الوالد، وكنا مرة أخرى في طريق مسدود، وهذه المرة أنا لم يكن لي .... المشكلة ليست في بلدي التعليمات البرمجية.
لا نيولين، لا داتاريسيفديفنت ...
بدأت التصحيح ومشاهدة الأحداث أوتبوتداتاريسيتد وبدأت تغيير رمز عملية الطفل بطرق مختلفة. تسبب تغيير صغير أدناه الحدث أوتبوتداتاريسيتد لاطلاق النار مع النص موجه، انظر الشكل 4.
من بعض الاختبارات الأخرى، يبدو أن الحدث أوتبوتداتاريسيفد يطلق النار فقط عندما يكون نيولين في الإخراج من عملية الطفل. موجه دون نيولين لن إطلاق الحدث أوتبوتداتاريسيفد وبالتالي العملية الأم لا تحصل على موجه ولا يمكن الرد. طريق مسدود!
تنفيذ بلدي غير متزامن القراءة ستدوت / ستدر.
أنا بحاجة إلى قراءة مطالبات من عملية الطفل التي لا & # 8217؛ ر بلدي رمز ولكن تطبيق وحدة التحكم 3rd الطرف، لذلك في نهاية المطاف كنت بحاجة إلى أن تكون قادرة على تلقي المطالبات ث / س نيولينس. حل المسألة المطلوبة لي لتنفيذ بلدي أسينك إو الطبقة لقراءة عملية ستدوت / ستديرور.
أنا خلقت فئة اسمه ستدسترمريدر يقرأ تيار وحرائق الأحداث مشابهة أساسا ل أوتبوتداتاريزيفيد الحدث، إلا أنه لا مفتاح قبالة نيولين لاطلاق النار حدث البيانات الواردة ولكن بدلا من ذلك حرائق بمجرد تلقي البيانات. في الشكل 5 لقد أبرز الاختلافات التعليمات البرمجية في التعليمات البرمجية العملية الأصل باستخدام فئة القارئ الجديد.
رمز ستدريمريدر هو الدنيوية إلى حد ما، ولكن النتيجة كانت كما هو متوقع، انظر الشكل 6.
لاحظ أن "نعم" لم يتم عرض فقط بعد المطالبة - وهذا لأنه تم إرسالها مباشرة إلى ستدين عملية الطفل وعدم عرضها.
انقر للحصول على شفرة المصدر الكامل، والتي يتم توفيرها على أساس "كما هي"، دون أي ضمان من أي نوع.
شارك هذا:
ذات صلة.
آخر الملاحة.
ترك الرد إلغاء الرد.
عمل جميل، هذا هو الحل الدقيق الذي كنت أبحث عنه. نشكرك على تضمين شفرة المصدر.
شكرا مليون، رجل! ويبدو أن هذه المسألة لا تزال ذات صلة بعد 4 سنوات. ساعدني كثيرا.

تدفق الإخراج المخرجات الأحداث.
توفر فئة System. Diagnostics. Process الخيارات لاسترداد كافة الإخراج من عملية خارجية بعد اكتمالها، أو لاسترداد الأحداث التي تحتوي على الإخراج كما يحدث التنفيذ. الخيار لاستقبال أحداث الإخراج غير متزامن مفيد في السيناريوهات حيث تحتاج إلى تقديم تعليقات المستخدمين أو تسجيل الإخراج عندما تحدث مهلات.
عند تلقي أحداث الإخراج غير المتزامن، يجب التأكد من اكتمال العملية الخارجية عندما تريد التأكد من أن تحصل على كافة الإخراج. ومع ذلك، في انتظار هاسكسيتد أن يكون صحيحا ليست كافية. من أجل ضمان اكتمال كافة عمليات المعالجة، بما في ذلك التعامل مع أحداث الإخراج غير المتزامنة، يجب الاتصال ب Process. WaitForExit (). تحتاج إلى استدعاء الزائد اتخاذ أي وسيطات، حتى لو كنت تسمى سابقا process. WaitForExit (Int32) الزائد. الوثيقة process. WaitForExit (Int32) حالة:
لضمان اكتمال معالجة الحدث غير المتزامن استدعاء الزائد ويتفوريكسيت () الذي لا يأخذ أي معلمة بعد تلقي صحيح من هذا التحميل الزائد.
فيما يلي مثال بسيط يستخدم Process. WaitForExit (Int32) لفرض المهلات و Process. WaitForExit () لمسح أحداث الإخراج عند اكتمال العملية.
الأسئلة؟ تعليقات؟ بدء محادثة على تويتر.

Comments

Popular posts from this blog

مككس خبير الفوركس

الخيارات الثنائية. مككس خبير الفوركس. مسكس نصائح الخبراء - الصفحة الرئيسية | فيس بوك. مسكس الفوركس الخبراء مككسفوريكسكسيرت هو في سن # 3. ترتيب اليكسا على # 9،753،759 في التصنيف العالمي. هذه الخدمة الموقع في الولايات المتحدة. عنوان إب الخاص به هو 67.23.226.87. تاريخ آخر تحديث يوم الأحد، ... Mt4 الرسم البياني ل مككس تحميل مجاني | فتح & أمب؛ مستقل مقل. الحصول على إشارات الفوركس عن طريق البريد الإلكتروني. الحصول على إشارات النقد الاجنبى الحرة لدينا - تشكل ما يصل إلى 500 نقطة حقيقية / يوم. تحسين التداول الخاص بك وتصبح أفضل تاجر الفوركس مع إشارات الفوركس لدينا! أفضل الفوركس روبوت (MT4 إي) مقارنة ل 2018/2017 & # 171؛ أعلى. نحن نقدم أفضل نصائح الفوركس والدعم من خلال الباحثين في السوق من ذوي الخبرة التي دائما على استعداد لاسترداد الخسارة الخاصة بك. MT4 ريالتيمي مزود البيانات ل مسكس و نس - مكس سور. نحن الرائدة ميتاتريدر 4 (Mt4) مزود البيانات الحقيقي ل نس، مسكس، مسكس-سك، كوميكس، FOREX. We توفير الرسوم البيانية MT4 للخبراء الرسم البياني. ميتاتريدر 4 هي الجائزة. مضاعفة أموالك مع مستشار الخب...

فن شراء وبيع الأسهم وخيارات الأسهم

نظرة على شراء منخفضة، بيع استراتيجية عالية. "شراء منخفضة، بيع عالية" هو القول الاستثماري الشهير حول الاستفادة من ميل السوق إلى الإفراط في الاتجاه الهبوطي والصعودي. على الرغم من أنها بسيطة جدا، فإنه من الصعب تنفيذ. فمن السهل القول ما إذا كان سعر معين منخفض أو مرتفع في وقت لاحق، ولكن في هذه اللحظة، فمن الصعب من الناحية التاريخية. تؤثر الأسعار على علم النفس والعواطف من المشاركين في السوق. لهذا السبب، "شراء منخفضة، بيع عالية" يمكن أن يكون تحديا لتنفيذ باستمرار. يمكن للمتداولين استخدام الأدوات، مثل المتوسطات المتحركة ودورة الأعمال. صعوبات في شراء منخفضة، بيع عالية. وهناك أمثلة مشهورة على أن السوق مدفوعة إلى أقصى الحدود، سواء كانت أسعارا مرتفعة خلال فقاعات السوق أو أسعارا منخفضة خلال حالة الذعر في الأسواق. وقد ثبت أن هذه الفرص ممتازة لشراء منخفضة وبيع عالية. ومع ذلك، كانت هناك أوقات لا حصر لها عندما يستمر السوق تتجه في اتجاه واحد، معاقبة أولئك الذين يبحثون عن شراء منخفضة أو بيع عالية. ما يبدو مثل ارتفاع الأسعار يوم واحد قد تبدو مثل انخفاض الأسعار يوم آخر. يجب أن يكون لدى ...

دراسة حالة بيبسيكو استراتيجية التنويع

بيبسيكو دراسة حالة استراتيجية التنويع. مجانا استراتيجية التنوع بيبسيكو دجفو تحميل نوكيا حالة دراسة مقال تحميل فين 402 دورة كاملة دجفو تحميل اكت 212 الأسبوع 8 النهائي. M298.1 216.6h-261V681h427.2V444.2l37.1-35.3V681c0 20.4-16.7 37.1-37.1 37.1H37.1C16.7 718.1 0 701.4 0 681V216.6c0-20.4 16.7-37.1 37.1-37.1h297.2l. على ستوديباي يمكنك طلب المهمة الأكاديمية من واحد من 45000 الكتاب المهنية لدينا. استئجار الكاتب مباشرة، دون دفع مبالغ فيه للوكالات والشركات التابعة! إستراتيجية التنوع في Pepsicoв.. مقال معلومات: 1207 الكلمات. دراسة حالة بيبسيكو 1. ما هي شركة بيبسيكو [вЂ|] بوكا الترويج الذي أقيمه. بيبسيكو: هل التنويع خيار؟ تحليل دراسة الحالة استنادا إلى الأسئلة الواردة أدناه. 1 دراسة حالة بيبسيكو ملخص تنفيذي استراتيجية بيبسيكو للتنويع. تحليل سوت بيبسيكو. صياغة الاستراتيجية. شركة بيبسي كولا. حول. تصفح الكتب. دليل الموقع. إنديكسادور سوبورت ريسيستنسيا فوريكس. دراسة حالة بيبسيكو. هذا هو دراسة حالة مثيرة للاهتمام من ما يمكن أن يكون بيبسيكو استخدمت استراتيجية تنويع الشركات ذات الصلة باعتبارها أساسية. سو...