Skip to main content

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


جورج بيربيليسzoomicon.


مهندس الحاسوب، ميكروسوفت مفب J # & # 8211؛ R & أمب؛ D 2004-2018، بورلاند سبيريت أوف ديلفي 2001.


غوتشاس في انتظر التطبيق قصف لإنهاء (مع / مهلة الخروج) مع.


جئت عبر عينة دعم ميكروسوفت مفيدة تسمى "كيفية الانتظار لتطبيق مقذوف لإنهاء باستخدام فيسوال باسيك 2005 أو فيسوال باسيك" في support. microsoft/kb/305368.


ومع ذلك، لاحظ أن هناك عدة غوتشاس مع التعليمات البرمجية المقدمة هناك (أبلغت مايكروسوفت فقط على ذلك، ونأمل أن تأخذ إشعار). كما يشير المقال إلى C # وإلى C ++ إصدارات العينة التي تحتاج بوضوح نفس الإصلاحات.


1) هناك & # 8217؛ ق مشكلة في كل من العينة الأولى (الانتظار إلى أجل غير مسمى) والثاني (الانتظار مع مهلة)


& # 8216؛ انتظر حتى تكتمل نافذة العملية التحميل.


& # 8216؛ انتظر حتى تنتهي العملية.


لماذا الانتظار لإدخال الخمول أولا؟ قد لا تدخل العملية أبدا في حالة الخمول والخروج قبل ذلك. وفقا ل msdn. microsoft/en-us/library/8d7363e2(v=VS.90).aspx قد تحصل استثناء من ويتفورينبوتيدل:


حدث خطأ غير معروف. فشلت العملية في إدخال حالة خمول.


لقد خرجت العملية بالفعل.


لا يرتبط أي عملية مع كائن بروسيس هذه.


أفترض أنه من الأفضل تجنب الدعوة ويتفورينبوتيدل على الإطلاق منذ كنت مجرد رعاية ل ويتفوريكسيت هناك.


2) يمكن حتى ويتفوريكسيت رمي ​​الاستثناءات التي يجب أن تحقق التعليمات البرمجية وفقا ل msdn. microsoft/en-us/library/fb4aw7b8.aspx.


لا توجد عملية مقترنة كائن العملية هذه.


أنت تحاول استدعاء ويتفوريكسيت لعملية قيد التشغيل على كمبيوتر بعيد. تتوفر هذه الطريقة فقط للعمليات التي يتم تشغيلها على الكمبيوتر المحلي.


3) لا تذكر المقالة الدعم ما هو مستند ويتفوريكسيت (المهلة) (msdn. microsoft/en-us/library/fb4aw7b8.aspx) حول المهلة "لانهائية":


في الإصدار 3.5 والإصدارات السابقة الإطار، انتظرت التحميل الزائد ويتفوريكسيت ل ميكسوندو ماكسفالو (حوالي 24 يوما)، وليس إلى أجل غير مسمى. أيضا، الإصدارات السابقة لم تنتظر معالجات الحدث للخروج إذا تم الوصول إلى الوقت ماكسفالو الكامل.


كما يبدو وثائق "ويتفوريكسيت (مهلة)" لا يذكر هناك ثابت time. Infinite أن قيمة -1 لاستخدام لمثل هذه المهلات لانهائية (وجدت من المستند من Thread. Join): msdn. microsoft/ أون لنا / مكتبة / system. threading. timeout. infinite (ت = VS.90).aspx اتصال.


4) فشل عينة لاستدعاء إغلاق وبالتالي تبقي على الموارد الإنفاق لتتبع مقبض (و "تأمين" تلك إدس التعامل الواضح على الرغم من أنها ليست سهلة كما هو الحال في وحدات المعالجة المركزية القديمة وإصدارات نظام التشغيل لنفد من مقابض آمل).


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


لأن العملية المرتبطة قد خرجت، الخاصية مقبض المكون لم يعد يشير إلى مورد عملية موجود. بدلا من ذلك، يمكن استخدام المقبض فقط للوصول إلى معلومات نظام التشغيل & # 8217؛ حول مورد العملية. النظام على بينة من مقابض للخروج من العمليات التي لم يتم إصدارها من قبل مكونات العملية، لذلك فإنه يحتفظ إكسيتيمي والتعامل مع المعلومات في الذاكرة حتى يقوم مكون العملية بتحرير الموارد على وجه التحديد. لهذا السبب، في أي وقت استدعاء بدء تشغيل مثيل عملية استدعاء إغلاق عند انتهاء العملية المقترنة ولم تعد بحاجة إلى أية معلومات إدارية حول هذا الموضوع. إغلاق يحرر الذاكرة المخصصة لعملية خرجت.


لاحظ أيضا أنه يمكن أن يكون لديك عبارة "استخدام" عند تعريف كائن العملية الجديدة (بدلا من ديم) بدلا من الحاجة صراحة إلى استدعاء "process. Close" في النهاية لتحرير الموارد كما هو موضح في msdn. microsoft/en - لنا / مكتبة / system. diagnostics. process. close (ت = VS.90).aspx اتصال.


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


ديسبوس (منطقية) يدعو المكالمات إغلاق. وضع كائن بروسيس في كتلة استخدام يتصرف الموارد دون الحاجة للاتصال استدعاء.


5) قضية أخرى في العينة 2 (الانتظار مع مهلة). ولا يشير إلى الحاجة إلى الاتصال ويتفوريكسيت () مرة أخرى مع عدم وجود معلمات بعد ويتفوريكسيت (مهلة) في حالة حيث تم إعادة توجيه الإخراج القياسي لمعالجات الحدث غير المتزامن (يجب ذكر هذه الحالة لاستكمال)


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


معالجة . طريقة ويتفوريكسيت (Int32)


تحتوي الوثائق المرجعية أبي على منزل جديد. انتقل إلى متصفح أبي على docs. microsoft للاطلاع على التجربة الجديدة.


يرشد مكون العملية إلى الانتظار لعدد الملي ثانية المحدد للعملية المقترنة للخروج.


الجمعية: النظام (في System. dll)


المعلمات.


مقدار الوقت، بالمللي ثانية، لانتظار انتهاء العملية المقترنة. الحد الأقصى هو أكبر قيمة ممكنة لعدد صحيح 32 بت، والذي يمثل اللانهاية لنظام التشغيل.


قيمة الإرجاع.


صحيح إذا خرجت العملية المرتبطة بها؛ خلاف ذلك، كاذبة.


تعذر الوصول إلى إعداد الانتظار.


لم يتم تعيين معرف العملية، ولا يمكن تحديد التعامل الذي يمكن تحديد الخاصية إد.


لا توجد عملية مقترنة كائن العملية هذه.


أنت تحاول الاتصال ويتفوريكسيت (Int32) لعملية قيد التشغيل على كمبيوتر بعيد. تتوفر هذه الطريقة فقط للعمليات التي يتم تشغيلها على الكمبيوتر المحلي.


ويتفوريكسيت (Int32) يجعل الانتظار مؤشر الترابط الحالي حتى ينتهي العملية المقترنة. وينبغي أن يسمى بعد أن يتم استدعاء جميع الطرق الأخرى على العملية. لتجنب حظر مؤشر الترابط الحالي، استخدم الحدث الذي تم الخروج منه.


تقوم هذه الطريقة بتوجيه مكون العملية لانتظار مقدار محدود من الوقت لإنهاء العملية. إذا لم يتم إنهاء العملية المقترنة بنهاية الفترة الزمنية بسبب رفض طلب الإنهاء، يتم إرجاع فالس إلى إجراء الاستدعاء. يمكنك تحديد رقم سلبي (لانهائي) لميلي ثانية، وعملية. سوف يتصرف ويتفوريكسيت (Int32) نفس الزائد ويتفوريكسيت (). إذا قمت بتمرير 0 (صفر) إلى الأسلوب، فإنه يرجع صحيح فقط إذا كانت العملية قد خرجت بالفعل؛ وإلا فإنه يعود فورا كاذبة.


في الإطار 3.5 والإصدارات السابقة، إذا كان ميلي ثانية واحدة -1، انتظر التحميل الزائد ويتفوريكسيت (Int32) ل ماكسفالو ميلي ثانية (حوالي 24 يوما)، وليس إلى أجل غير مسمى.


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


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


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


راجع مثال التعليمات البرمجية الخاصية إكسيتكود.


للحصول على الثقة الكاملة للمتصل الفوري. لا يمكن استخدام هذا العضو من خلال شفرة موثوق بها جزئيا.


في انتظار عملية مع مهلة في.


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


خاصة إذا كانت هذه العملية جزءا من نظام حاسم مثل عملية البناء الخاص بك، كنت لا تريد عملية معلقة لتكون قادرة على التسبب بكامل نظام البناء لوقف القتلى في انها المسارات.


لحسن الحظ، عملية لديها زيادة في الوزن من ويتفوريكسيت الذي يأخذ مهلة عدد صحيح، وإرجاع منطقية - صحيح إذا كانت العملية خرجت، أو خطأ إذا لم العملية.


باستخدام هذه الوظيفة، يمكننا كتابة طريقة مثل هذا:


في هذا المقتطف، أوتباتداتاريسيفد هو الحدث الذي ينطلق عندما عملية يكتب البيانات إلى الإخراج القياسية، وإشارات بيجينأوتوبترادلين إلى أننا قد أعدنا الحدث ونحن على استعداد لبدء الاستماع لإخراج العملية.


استخدام نموذج الحدث في هذه الحالة يعني أننا لسنا بحاجة إلى أن يكون النص الناتج عملية كاملة في الذاكرة في أي نقطة واحدة في الوقت المناسب. كما يكتب عملية خط من النص، سيكون لدينا فقط هذا الخط في الذاكرة، وسوف تحصل جمع القمامة بعد أن نقوم بتحديث العداد لدينا.


هناك اثنين "غوتشا" في هذا المقتطف، على الرغم من.


الأول هو process. Kill (). هذا هو حالة السباق الكلاسيكي - بين الوقت يعود عملية لدينا من process. WaitForExit () ويستدعاء process. Kill ()، يمكن أن عملية الهدف الخروج. في هذه الحالة، تنص مسن أنه إذا استدعاء. Kill () على العملية التي خرجت بالفعل، سوف تحصل على إنفاليدوبيراتيونكسيبتيون.


يمكننا إصلاح هذا من خلال التعامل مع الاستثناء، مثل ذلك:


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


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


في هذه الحالة، فمن الممكن لوظيفتنا جيتنوموتبوتشارز لإرجاع قيمة تحتوي على أحرف أقل من إخراج العملية الفعلية، ما لم نسميه ويتفوريكسيت () مرة أخرى.


ومع أخذ ذلك في الاعتبار، تبدو وظيفتنا الآمنة النهائية الآن كما يلي:


كود الحبيب.


مدونة للمدربين من قبل المبرمجين.


العمل مع العمليات في.


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


في، وهذا هو نوع من العملية يتم عادة عن طريق أبي System. Diagnostics. Process. و أبي العملية عامة جدا وقوية، ولكن يمكن أن يكون من الكعوب وصعبة الاستخدام بشكل صحيح في حالات الاستخدام الشائعة التي يتم التعامل معها بشكل جيد من قبل اللغات المذكورة أعلاه. كما المفسد، انتهى بي الأمر التفاف الكثير من هذا التعقيد في مكتبة جديدة: ميداليونشيل. مع ميداليونشيل، وهذا النوع من المهام هو بطانة واحدة:


المزيد عن ذلك في وقت لاحق، على الرغم من. في الوقت الحالي، دع & # 8217؛ نعود إلى العملية. وكمثال ملموس، أردت مؤخرا طلبي لإطلاق مثيل نوديجس من لتشغيل مترجم أقل كس. كنت بحاجة إلى الكتابة إلى عقدة & # 8217؛ s المدخلات القياسية أثناء التقاط النص الإخراج القياسية، نص الخطأ القياسية، وخروج التعليمات البرمجية.


محاولة أولية.


هنا & # 8217؛ s الشفرة التي بدأت بها:


هذا الرمز مطول تماما. للأسف انها & # 8217؛ عربات التي تجرها الدواب تماما كذلك.


التعامل مع الحجج العملية.


واحدة من المشاكل الأولى نلاحظ مع هذا الرمز هو أن الخاصية وسيطات على بروسيسستارتينفو هو مجرد سلسلة. إذا كانت الوسيطات التي نمر بها ديناميكية، فسنحتاج إلى توفير منطق الهروب المناسب قبل تسلسل لمنع أشياء مثل المسافات في مسارات الملفات من الانهيار. الهروب من سطر الأوامر ويندوز سطر الأوامر معقدة للغاية؛ لحسن الحظ، التعليمات البرمجية اللازمة لتنفيذ ذلك موثقة بشكل جيد في هذه المشاركة ستاكوفيرفلو. وبالتالي، فإن أول تغيير نحن & # 8217 سوف تجعل لإضافة المنطق الهروب:


التعامل مع ديادلوكس.


والمشكلة الأقل وضوحا هي مشكلة الجمود. جميع مسارات العملية الثلاثة (في، خارج، والخطأ) هي محدودة في مقدار المحتوى الذي يمكن عازلة. إذا كان المخزن المؤقت الداخلي يملأ، ثم كل من يكتب إلى تيار سوف كتلة. في هذه الشفرة، على سبيل المثال، لا نقرأ من تيارات الخروج والخطأ إلا بعد انتهاء العملية. وهذا يعني أننا يمكن أن نجد أنفسنا في حالة حيث العادم عوادم عليه & # 8217؛ s المخزن المؤقت الخطأ. في هذه الحالة، عقدة من شأنه أن يمنع على الكتابة إلى خطأ قياسي، في حين يتم حظر التطبيق لدينا القراءة إلى نهاية معيار الخروج. وهكذا، نحن & # 8217؛ وجدنا أنفسنا في طريق مسدود!


يوفر أبي العملية طريقة التي تبدو مصممة للتعامل مع هذا: بيجينوتبوت / إرورريادلين. مع هذه الطريقة، يمكنك الاشتراك في غير المتزامن & # 8220؛ داتاريفسد & # 8221؛ الأحداث بدلا من القراءة من تيارات الإخراج مباشرة. بهذه الطريقة، يمكنك الاستماع إلى كل من تيارات في وقت واحد. لسوء الحظ، هذه الطريقة لا توفر أي وسيلة لمعرفة متى تم استلام آخر بت من البيانات. لأن كل شيء غير متزامن، فمن الممكن (ولقد لاحظت هذا) للأحداث لاطلاق النار بعد عاد ويتفوريكسيت ().


لحسن الحظ، يمكننا توفير الحل البديل الخاص بنا باستخدام المهام لقراءة غير متزامنة من الجداول أثناء الانتظار لعقدة للخروج:


إضافة مهلة.


هناك مسألة أخرى نود التعامل معها وهي مسألة تعليق العملية. بدلا من الانتظار إلى الأبد لعملية الخروج، سيكون لدينا رمز أكثر قوة إذا فرضنا مهلة بدلا من ذلك:


المزامنة على طول الطريق!


بينما نستخدم الآن إو غير متزامن لقراءة من تيارات العملية، ما زلنا نحظر سلسلة ترابط واحدة أثناء انتظار إتمام العملية. يمكننا زيادة تحسين الكفاءة هنا عن طريق الذهاب غير المتزامن تماما:


التكيف مع أحجام البيانات الكبيرة.


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


التبديل إلى ميداليونشيل.


لقد قمنا الآن ببناء شفرة (صحيحة) وقوية وفعالة من التعليمات البرمجية للعمل مع عملية من. ومع ذلك، نأمل أن يكون هذا المثال مقتنع لك أن أبي العملية ليست تماما حتى وظيفة عندما يتعلق الأمر سهولة الاستخدام. تحقيقا لهذه الغاية، أنا & # 8217؛ م الذهاب إلى تقديم بديل: مكتبة ميداليونشيل (متوفر على نوجيت). هنا & # 8217؛ s المنطق المكافئ باستخدام ميداليونشيل:


مع ميداليونشيل، يتم هجاء الحجج تلقائيا، يتم تلقائيا مخزنة عملية تيارات لمنع الجمود، وملفوفة كل شيء بشكل جيد في واجهة المستخدم أبي المزامنة غير ودية. نحن دون & # 8217؛ ر حتى ما يدعو للقلق حول ديسبوس (): افتراضيا يتم التخلص من العملية تلقائيا عند الانتهاء من الأمر.


كما يوفر ميداليونشيل الزائد المشغل لتمكين باش مثل إعادة توجيه المدخلات القياسية والإخراج القياسية. وهذا يعني أنه يمكنك استخدام & # 8220؛ & لوت؛ & # 8221؛ و & # 8220؛> & # 8221؛ إلى بيانات الأنابيب من وإلى الجداول والملفات والمجموعات. يمكنك حتى استخدام & # 8220؛ | & # 8221؛ إلى بيانات الأنابيب من عنصر أمر واحد إلى آخر.


مايك أديلسون.


آخر المشاركات التي كتبها مايك أديلسون (انظر جميع)


تنفيذ يساوي () و جيثاسكود () في C # 7 - 3 يونيو 2017 البرمجة في C # - 3 مايو 2017 7 طرق لاستخدام C # 7 تعبيرات رمي ​​- 26 أبريل 2017.


عن مايك أديلسون.


أنا مهندس برمجيات في أبليد بريديكتيف تيشنولوجيز في واشنطن D. C.، حيث أعمل على & # 8220؛ البيانات الكبيرة & # 8221؛ تحليلات وتطوير شبكة الإنترنت. في وقت الفراغ، وأنا أستمتع القراءة، والعمل على مختلف المشاريع الجانبية، والإجابة على الأسئلة حول ستاكوفيرفلو.


آخر الملاحة.


7 أفكار حول & لدكو؛ العمل مع العمليات في & رديقو؛


هل من الممكن القراءة والكتابة لنفس العملية من داخل نفس البرنامج. استخدمت قذيفة ميدالية لقراءة إلى الإخراج من برنامج وحدة التحكم التفاعلية. ولكن عندما أبدأ موضوع مختلف لكتابة الأوامر إلى البرنامج وريتستريم. وريتيلين يبدو فقط لشنق. أنا أحاول السيطرة على بيانوبار (انظر جيثب). هناك بعض الخطوات عند محاولة قراءة سطر من العملية والاستجابة بخط. هذا يقودني للجنون.


نعم، يجب أن يكون من الممكن القراءة والكتابة إلى عملية داخل نفس البرنامج. الرجاء التأكد من أنك تستخدم أحدث إصدار من ميداليونشيل وأن الإدخال القياسي للأوامر يتم تعيينه على أوتوفلوش (يجب أن يكون الإعداد الافتراضي).


قد تلاحظ وريتلين لتعليق إذا كان عملية الوجهة إيسن & # 8217؛ ر سحب في البيانات، وتملأ المخزن المؤقت بين العملية (وبالتالي منع تدفق من إكمال).


ومن الصعب بالنسبة لي أن أقول أكثر دون رؤية التعليمات البرمجية الخاصة بك؛ والنظر في نشر وصف أكثر تفصيلا ونموذج التعليمات البرمجية كمسألة على هتبس: // جيثب / مادلسون / ميداليونشيل.


شكرا مايكل. لقد فعلت ذلك، انها قضية # 9. أعيد قراءة سؤالي. ومن الواضح أنني كنت نائما جدا لكتابة أي شيء. كنت أقصد أن أقول إن هناك بعض الخطوات التي أحتاج إليها وأنا في عداد المفقودين. شيء واضح للجميع من قبلي.


هل من الممكن الانتظار لسلسلة معينة في تيار الإخراج من الأمر؟


بول فوند = أوايت cmd. StandardOutput. Expect (سيرشسترينغ، تيموت)؛


لا توجد وظيفة مضمنة لإجراء ذلك. إذا كانت السلسلة لا تمتد على سطر، فيمكنك إجراء ما يلي:


بينما ((لين = cmd. StandardOutput. ReadLine ())! = نول)


إذا كانت سلسلة البحث تمتد أسطر متعددة، يمكنك استخدام أسلوب حلقة متماثلة حيث يمكنك تتبع آخر حرف N حيث N هو طول سلسلة البحث.


مثال الاستخدام.


أنا حلها بهذه الطريقة:


أنا أعيد توجيه كل من المدخلات والمخرجات والخطأ وتناولت القراءة من الإخراج وتدفقات الخطأ. يعمل هذا الحل ل سك 7-8، سواء بالنسبة ويندوز 7 و ويندوز 8.


حاولت جعل الطبقة التي من شأنها حل مشكلتك باستخدام تيار غير متزامن قراءة، من خلال اتخاذ في حساب علامة بييرز، روب، ستيفيفاي الأجوبة. القيام بذلك أدركت أن هناك خلل المتعلقة غير متزامن الناتج إخراج تيار قراءة.


لا يمكنك القيام بذلك:


سوف تتلقى System. InvalidOperationException: لم تتم إعادة توجيه ستانداردوت أو لم تبدأ العملية حتى الآن.


ثم لديك لبدء إخراج غير متزامن قراءة بعد بدء العملية:


القيام بذلك، جعل حالة سباق لأن تيار الإخراج يمكن أن تتلقى البيانات قبل تعيينه إلى غير متزامن:


ثم بعض الناس يمكن أن أقول أن لديك فقط لقراءة تيار قبل تعيينه إلى غير متزامن. ولكن نفس المشكلة تحدث. سيكون هناك حالة سباق بين قراءة متزامن وتعيين تيار في وضع غير متزامن.


لا توجد طريقة للحصول على قراءة غير متزامنة آمنة من تيار الإخراج من عملية في الطريقة الفعلية "عملية" و "بروسيسستارتينفو" تم تصميم.


ربما كنت أفضل باستخدام قراءة غير متزامن مثل اقترح من قبل المستخدمين الآخرين لحالتك. ولكن يجب أن تكون على علم بأنك يمكن أن تفوت بعض المعلومات بسبب حالة السباق.


أي من الإجابات أعلاه هو القيام بهذه المهمة.


الحل روب معلقة وحل "مارك بييرز 'الحصول على استثناء التخلص منها. (حاولت" حلول "من الإجابات الأخرى).


لذلك قررت أن أقترح حل آخر:


هذا رمز تصحيحها ويعمل تماما.


أنا شيء أن هذا هو نهج بسيط وأفضل (نحن لسنا بحاجة أوتوريزيتيفنت):


كنت تواجه نفس المشكلة، ولكن السبب كان مختلفا. ومع ذلك فإنه يحدث تحت ويندوز 8، ولكن ليس تحت ويندوز 7. يبدو أن السطر التالي قد تسبب في المشكلة.


كان الحل عدم تعطيل وسشليكسكيوت. تلقيت الآن نافذة منبثقة شل، غير المرغوب فيها، ولكن أفضل بكثير من البرنامج في انتظار لا شيء معين أن يحدث. لذلك أضفت العمل التالي حول ذلك:


الآن الشيء الوحيد الذي يزعجني هو لماذا يحدث هذا تحت ويندوز 8 في المقام الأول.


المقدمة.


الإجابة المقبولة حاليا لا تعمل (يلقي استثناء) وهناك الكثير من الحلول ولكن لا يوجد رمز كامل. ومن الواضح أن هذا يضيع الكثير من الوقت الناس لأن هذا هو السؤال الشعبي.


الجمع بين إجابة مارك بييرز وإجابة كارول تيل كتبت الكود الكامل على أساس كيف أريد استخدام الأسلوب Process. Start.


لقد استخدمته لإنشاء الحوار التقدم حول أوامر جيت. هذه هي الطريقة التي استخدمتها:


من الناحية النظرية يمكنك أيضا الجمع بين ستدوت وستدير، ولكن لم اختبر ذلك.


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


على أي حال، كان الحل الذي عملت بالنسبة لي لاستخدام المواضيع المختلفة لقراءة ستانداردوتبوت و ستانداردرور وكتابة الرسائل.


نأمل أن يساعد هذا الشخص، الذي يعتقد أن هذا يمكن أن يكون من الصعب جدا!


الحلول الأخرى (بما في ذلك EM0 في) لا يزال مسدودا لتطبيقي، بسبب مهلات الداخلية واستخدام كل من ستانداردوتبوت و ستانداردرور من تطبيق ولدت. هنا هو ما عمل لي:


تحرير: إضافة التهيئة من ستارتينفو إلى نموذج التعليمات البرمجية.


هذه الوظيفة ربما عفا عليها الزمن ولكن اكتشفت السبب الرئيسي لماذا عادة تعليق هو بسبب تجاوز كومة ل ريديريكتستانداردوتبوت أو إذا كان لديك ريديريكتستانداردرور.


كما بيانات الإخراج أو بيانات الخطأ كبيرة، وسوف يسبب وقت تعليق لأنه لا يزال يعالج لمدة غير محددة.

Comments

Popular posts from this blog

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

سينتروم أسعار الفوركس اليومية. الخيار الثنائي - # 1 تصنيف التطبيق التداول. في 20 بلدا * * وفقا لتصنيف أبستور الحالي (يونيو 2018). بما في ذلك ألمانيا، أستراليا، كندا، فرنسا، روسيا الخ. صفقات كل يوم. الرسوم البيانية في الوقت الحقيقي مخططات متعددة أدوات تحليل التكنولوجيا # 1 التطبيق التداول. حساب تجريبي مجاني $ 10 الحد الأدنى للإيداع صفقات من 1 $ 24/7 الدولية. اقتراح دي بروجلي في أطروحته أن المدارات المستقرة للإلكترونات في الذرات هي مثل موجات من الماء في خزان دائري مغلق. وعليهم أن يهتموا بمعاملة المشاركين في البحوث ومع الآثار الطويلة المدى المحتملة للبحث على المشاركين. في هذه الحالة تحدث إلى مشرف الويب الخاص بك كما تحتاج إلى تلقي عبر ميناء 8080. كوم. مراجع بورستين 1. [24] تم تحديدها باستخدام سانس بالاقتران مع تباينات التباين، استقرت قطرات ميكرومولزيون البنى الداخلية لزيت البنية في الماء بواسطة N، N-ديميثيلدوديسيلامين-N-أوكسيد (C12AO)، وتحتوي على الزيت (إه) أو إيثيل أوكتانويت (يو). إيغلستين، شر O. تكاثرها، ومع ذلك، عادة ما تعتمد على التحفيز من قبل المستضدات وعوامل باراكرين، معظمها السيتوكي...

تداول العملات الأجنبية القانونية في الصين

هو تداول العملات الأجنبية القانونية في الصين. هو تداول العملات الأجنبية القانونية في الصين. هو تداول العملات الأجنبية القانونية في الصين. الفوركس التعليم - تعلم التداول الفوركس | تجارة الفوركس الجنوب. 08.10.2018 & # 0183؛ & # 32؛ نعم، الفوركس قانوني في الولايات المتحدة. وخلافا لأسواق الأوراق المالية والعقود الآجلة، فإن سوق الصرف الأجنبي لا تخضع لأي إدارة مركزية. الفوركس الصين - موقع الفوركس # 1. إنيغما هذا هو سوق الفوركس في الصين. أصبح تداول العملات الأجنبية شائعا جدا للمستثمرين على مستوى العالم. ومع ذلك، لا تتبنى جميع البلدان عالم. هل تجارة الفوركس هلال - موسوعة للبحث. Трейдинг сортами برنت и WTI с надежным брокером. С нами зарабатывают с 1996 года! Тур за & # 160؛ мебелью & # 171؛ под ключ »в & # 160؛ Китай. تجارة الفوركس في الصين | معلومات مهمة! الأهم من ذلك، هو تداول العملات الأجنبية في الصين القانونية؟ هذه هي الأسئلة الأكثر شيوعا حول تداول العملات الأجنبية في الصين. هل تداول العملات الأجنبية قانوني أم غير قانوني في الهند؟ 21.10.2008 & # 0183؛ & # 32؛ مر...

ضريبة تداول العملات الأجنبية في سنغافورة

هل الأرباح من فوريكس للتجارة خاضعة للضريبة في سنغافورة؟ هل الدخل من تداول الفوركس خاضع للضريبة في سنغافورة؟ في الواقع، ماذا عن الأرباح من الأدوات المالية الأخرى (الخيارات الثنائية، العقود الآجلة، وما إلى ذلك)؟ لأي شخص حاليا أو مهتم بإدخال تداول الفوركس، آمل أن تكون على الأقل على هذا السؤال فكر لأنه يثبت أنك أنت على المدى الطويل. هذا المنصب سوف تساعدك على الإجابة على بعض الأسئلة لدي نفسي عندما بدأت جادة في تداول العملات الأجنبية! وتوفر لك بعض الوقت تبحث حول شبكة الإنترنت 🙂 بعد هيك من البحث على الانترنت للتحقق من ما إذا كانت أرباحي من تجارة الفوركس خاضعة للضريبة، لقد خرجت مع بضع استنتاجات ونتائج. من الواضح تماما أن تجار الفوركس المتناسقين سيبدأون في معرفة ما إذا كانوا سيخضعون للضريبة على دخلهم أو إذا كانت هناك أي لوائح للدخل من تداول هذه الأدوات: الإستنتاج؟ ببساطة، نعم و لا. انها بالتأكيد منطقة رمادية إذا كنت & # 8217؛ إعادة التداول بدوام كامل للدخل (أو إذا كنت تتداول بآلاف اللقطات في كثير من الأحيان)، والتي إيراس سيكون لها القول النهائي في هذه الحالة & # 8230؛ ومع ذلك، إذا كنت ...