عملية ويتوفوريكسيت سبيل المثال c #


Записная книжка программиста-новичка، C #، سكل، فب и все-все-все.
Я ведь это уже делал، но хрен теперь найдешь тот кусок кода، гуглим снова & # 8230؛ Где бы найти простое и понятное руководство для начинающего، а не тонкости для мега-гуру؟
Навигация по записям.
process. WaitForExit не ждет، a Process. Kill не убивает - удаление файла после завершения процесса.
ترجمة: дождаться завершения работы процесса и удалить его файл. Это может понадобиться при работе системы автоматического обновления، перезаписывающей исполняемый файл или в иных ситуациях.
Здесь возможны два варианта. В первом случае мы сами убиваем процесс (что вообще-то нежелательно)، во втором процесс сам завершает свою работу и нам надо просто дождаться этого момента с помощью Process. WaitForExit، после чего исполнить задуманное без страха и сомнений. В обоих случаях мы получаем ошибку доступа к файлу، он все-равно остается заблокирован، как будто процесс не завершался.
Примерный код. SimpleForm. exe здесь примитивная программа с одним окном، создаваемая студией по умолчанию для соответствующего типа проекта. При желании протестировать разные промежутки времени в нее можно добавить таймер، закрывающий приложение через пару секунд. Более сложные варианты могут включать в себя поиск существующего процесса по имени или коду.
ы ч ч ч ч ч ч ч ч ч. Чтобы он начал это делать надо выставить свойство процесса إنابليرايسينجيفنتس в ترو. Теперь метод заработает، но ошибка никуда не исчезнет.
Причина проста - после завершения работы процесса системе требуется некоторое время на уничтожение его объектов в памяти и снятие блокировок с файлов. Отследить это стандартными средствами невозможно، так что придется пойти обходным путем، смысл которого понятен из примера кода - пытаться удалять файл через небольшие промежутки времени.
Навигация по записям.
Комментарии.
process. WaitForExit не ждет، a Process. Kill не убивает - удаление файла после завершения процесса & # 8212؛ 1 комментарий.
Есть такое дело، у меня подобный код، но самое интересное، что после удаления إكس файла даже через паузу как тут описано، у меня идет копирование другого إكس на его место، так вот، копирование тоже пришлось делать через паузу، несмотря на то، что файл удалил))) Да، на копировании реже вылетает чем на удаление، но вылетает!))) Причем чем сильнее загружены بو и память، тем чаще.

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

مثال الاستخدام.
أنا حلها بهذه الطريقة:
أنا إعادة توجيه كل من المدخلات والمخرجات والخطأ وتناولت القراءة من الإخراج وتدفقات الخطأ. يعمل هذا الحل ل سك 7-8، سواء بالنسبة ويندوز 7 و ويندوز 8.
حاولت جعل فئة من شأنها أن تحل مشكلتك باستخدام تيار غير متزامن قراءة، من خلال اتخاذ في حساب علامة بييرز، روب، ستيفيفاي الأجوبة. القيام بذلك أدركت أن هناك خلل المتعلقة غير متزامن الناتج إخراج تيار قراءة.
لا يمكنك القيام بذلك:
سوف تتلقى System. InvalidOperationException: لم تتم إعادة توجيه ستانداردوت أو لم تبدأ العملية حتى الآن.
ثم لديك لبدء إخراج غير متزامن قراءة بعد بدء العملية:
القيام بذلك، جعل حالة سباق لأن تيار الإخراج يمكن أن تتلقى البيانات قبل تعيينه إلى غير متزامن:
ثم بعض الناس يمكن أن أقول أن لديك فقط لقراءة تيار قبل تعيينه إلى غير متزامن. ولكن نفس المشكلة تحدث. سيكون هناك حالة سباق بين قراءة متزامن وتعيين تيار في وضع غير متزامن.
لا توجد طريقة للحصول على قراءة غير متزامنة آمنة من تيار الإخراج من عملية في الطريقة الفعلية "عملية" و "بروسيسستارتينفو" تم تصميم.
ربما كنت أفضل باستخدام قراءة غير متزامن مثل اقترح من قبل المستخدمين الآخرين لحالتك. ولكن يجب أن تكون على علم بأنك يمكن أن تفوت بعض المعلومات بسبب حالة السباق.
أي من الإجابات أعلاه هو القيام بهذه المهمة.
الحل روب معلقة وحل "مارك بييرز 'الحصول على استثناء التخلص منها. (حاولت" حلول "من الإجابات الأخرى).
لذلك قررت أن أقترح حل آخر:
هذا رمز تصحيحها ويعمل تماما.
أنا شيء أن هذا هو نهج بسيط وأفضل (نحن لسنا بحاجة أوتوريزيتيفنت):
كنت تواجه نفس المشكلة، ولكن السبب كان مختلفا. ومع ذلك فإنه يحدث تحت ويندوز 8، ولكن ليس تحت ويندوز 7. يبدو أن السطر التالي قد تسبب في المشكلة.
كان الحل عدم تعطيل وسشليكسكيوت. تلقيت الآن نافذة منبثقة شل، غير المرغوب فيها، ولكن أفضل بكثير من البرنامج في انتظار لا شيء معين أن يحدث. لذلك أضفت العمل التالي حول ذلك:
الآن الشيء الوحيد الذي يزعجني هو لماذا يحدث هذا تحت ويندوز 8 في المقام الأول.
المقدمة.
الإجابة المقبولة حاليا لا تعمل (يلقي استثناء) وهناك الكثير من الحلول ولكن لا يوجد رمز كامل. ومن الواضح أن هذا يضيع الكثير من الوقت الناس لأن هذا هو السؤال الشعبي.
الجمع بين إجابة مارك بييرز وإجابة كارول تيل كتبت الكود الكامل على أساس كيف أريد استخدام الأسلوب Process. Start.
لقد استخدمته لإنشاء الحوار التقدم حول أوامر جيت. هذه هي الطريقة التي استخدمتها:
من الناحية النظرية يمكنك أيضا الجمع بين ستدوت وستدير، ولكن لم اختبر ذلك.
وأنا أعلم أن هذا العشاء القديم ولكن بعد قراءة هذه الصفحة بأكملها لا شيء من الحلول كان يعمل بالنسبة لي، على الرغم من أنني لم أحاول محمد ريحان كما كان من الصعب قليلا على رمز لمتابعة، على الرغم من أنني أعتقد أنه كان على الطريق الصحيح . عندما أقول أنها لم تعمل هذا ليس صحيحا تماما، وأحيانا أنها سوف تعمل بشكل جيد، وأعتقد أنه هو شيء للقيام به مع طول الإخراج قبل علامة إوف.
على أي حال، كان الحل الذي عملت بالنسبة لي لاستخدام المواضيع المختلفة لقراءة ستانداردوتبوت و ستانداردرور وكتابة الرسائل.
نأمل أن يساعد هذا الشخص، الذي يعتقد أن هذا يمكن أن يكون من الصعب جدا!
الحلول الأخرى (بما في ذلك EM0 في) لا يزال مسدودا لتطبيقي، بسبب مهلات الداخلية واستخدام كل من ستانداردوتبوت و ستانداردرور من تطبيق ولدت. هنا هو ما عمل لي:
تحرير: إضافة التهيئة من ستارتينفو إلى نموذج التعليمات البرمجية.
هذه الوظيفة ربما عفا عليها الزمن ولكن اكتشفت السبب الرئيسي لماذا عادة تعليق هو بسبب تجاوز كومة ل ريديريكتستانداردوتبوت أو إذا كان لديك ريديريكتستانداردرور.
كما بيانات الإخراج أو بيانات الخطأ كبيرة، وسوف يسبب وقت تعليق لأنه لا يزال يعالج لمدة غير محددة.

process. waitforexit إكسامبل c #
لدي العمل على مشروع شركتي. لاحظت هذه المشكلة، عندما أدعو من واحد إيكس إلى آخر إيكس. خلال سحب النموذج في إيكس الثاني وسوف تظهر نموذج متعددة. أنا باستخدام ويتفوريكسيت ().
يرجى حلها.
تم نقله من قبل إدهيكي الأربعاء 27 يوليو 2018 2:44 م (من: 3.0 / 3.5 ويندوز سير العمل الأساس)
هذا هو بالضبط سبب المشكلة. إذا تم استدعاء ويتفوريكسيت من مؤشر ترابط النموذج، فإنه سيتم منع إعادة رسم النموذج. سحب شيء أمام نافذة محجوبة يترك أثرا من النافذة جر.
اقترح كجواب من قبل أحمديلياس مشرف الخميس، يوليو 28، 2018 10:34 آم تم وضع علامة كجواب من قبل جاكي الشمس المشرف الاثنين، 08 أغسطس 2018 6:50 ص.
رمز سيكون أفضل وسيكون من الأفضل أيضا إذا كنت تستطيع أن تقول لنا بالضبط ما كنت تحاول تحقيقه.
ويتفوريكسيت () ينتظر ببساطة (كتل التعليمات البرمجية الخاصة بك لهذه المدة) لعملية للخروج قبل الاستمرار في تنفيذ رمز الاتصال الخاص بك.
C # مفب (2007-2018) مس فيندور - مس كل الطريق! أتباع منذ عام 1995 مس سوبر إفانجيليست | مسن المنتديات المشرف.
اقترح كجواب من قبل أحمديلياس مشرف الخميس، يوليو 28، 2018 10:33 ص ملحوظ كجواب من قبل جاكي الشمس المشرف الاثنين، 08 أغسطس 2018 6:50 ص.
جميع الردود.
رمز سيكون أفضل وسيكون من الأفضل أيضا إذا كنت تستطيع أن تقول لنا بالضبط ما كنت تحاول تحقيقه.
ويتفوريكسيت () ينتظر ببساطة (كتل التعليمات البرمجية الخاصة بك لهذه المدة) لعملية للخروج قبل الاستمرار في تنفيذ رمز الاتصال الخاص بك.
C # مفب (2007-2018) مس فيندور - مس كل الطريق! أتباع منذ عام 1995 مس سوبر إفانجيليست | مسن المنتديات المشرف.
اقترح كجواب من قبل أحمديلياس مشرف الخميس، يوليو 28، 2018 10:33 ص ملحوظ كجواب من قبل جاكي الشمس المشرف الاثنين، 08 أغسطس 2018 6:50 ص.
لقد كان check. it مشكلة على ويتفوريكسيت () فقط. لاحظت أن المشكلة عند الخطوة الثانية إيكس شكل.
حرره راج كومار. R الخميس، 28 يوليو، 2018 10:09 ص.
ما هي المشكلة بالضبط؟ هل قرأت ردي؟ هل قرأت أيضا الرابط الذي زودته؟
ويتفوريكسيت () هي طريقة حظر الترابط التي ستفعل بالضبط ذلك - انتظر عملية للخروج قبل أن يستمر مع التعليمات البرمجية. فإنه لن يجعل إخفاء النموذج الخاص بك أو تقليل على الإطلاق، إلا إذا كنت تخبر التعليمات البرمجية للقيام بذلك قبل استدعاء ويتفوريكسيت ()
C # مفب (2007-2018) مس فيندور - مس كل الطريق! أتباع منذ عام 1995 مس سوبر إفانجيليست | مسن المنتديات المشرف.
كل شيء يعمل بشكل جيد. ولكن عندما نقل النموذج، فإنه تظهر نموذج متعددة.
هذا هو بالضبط سبب المشكلة. إذا تم استدعاء ويتفوريكسيت من مؤشر ترابط النموذج، فإنه سيتم منع إعادة رسم النموذج. سحب شيء أمام نافذة محجوبة يترك أثرا من النافذة جر.
اقترح كجواب من قبل أحمديلياس مشرف الخميس، يوليو 28، 2018 10:34 آم تم وضع علامة كجواب من قبل جاكي الشمس المشرف الاثنين، 08 أغسطس 2018 6:50 ص.
عندما تقول عرض نماذج متعددة - هل تتحدث عن مثيلات متعددة من النماذج أو مجرد الرسم / التقديم؟
إذا كان الرسم / التقديم ثم نعم، كما قيل من قبل - لأنه لأنه ينتظر العملية للخروج / النهاية قبل أن يستمر، و ثريادبلكينغ حتى سترى & كوت؛ مشكلة & كوت؛ يبدو أنك تصف. ليس هناك & كوت؛ إصلاح & كوت؛ لهذا لأنها ليست علة أو قضية ولكن فقط ما كنت تستخدم وكيف كنت تستخدمه.
هل هناك سبب لاستخدامك ويتفوريكسيت ()؟ هل لديك لإظهار النموذج الخاص بك عند استخدام ويتفوريكسيت ()؟ لماذا لا تخفي أو تقلل من النموذج قبل استدعاء ويتفوريكسيت () ثم استعادته بعد ذلك؟
C # مفب (2007-2018) مس فيندور - مس كل الطريق! أتباع منذ عام 1995 مس سوبر إفانجيليست | مسن المنتديات المشرف.
تقوم ميكروسوفت بإجراء استطلاع عبر الإنترنت لفهم رأيك لموقع مسن على الويب. إذا اخترت المشاركة، سيتم تقديم الاستبيان عبر الإنترنت لك عند مغادرة موقع مسن على ويب.

process. waitforexit إكسامبل c #
قد يبدو هذا السؤال غريبا بعض الشيء ولكني أحاول تشغيل VS2005 من خلال عملية وتنفيذ أمر معين وأنا ويتوفوريكسيت (). أنا إعادة توجيه الإدخال والإخراج بنجاح ولكن كل الآن وبعد ذلك يحدث لتلقي نافذة خطأ الإبلاغ عن إطار / رسالة. والمشكلة هي أنني عن بعد، لذلك عندما تحدث هذه الرسالة / النافذة أثناء تنفيذ العملية، وسوف شنق إلا إذا قمت بتسجيل الدخول إلى الجهاز الآخر (عن بعد) وإغلاق النافذة.
هل هناك أي طريقة لقتل هذه النافذة بشكل منهجي أو تعطيل الرسالة / النافذة من حدوثها؟ لقد فكرت في تشغيل فس في التنفيذ الصامت (لم أجد حتى الآن وسيلة للقيام بذلك). لقد حاولت أيضا معرفة ما إذا كان هناك أي شيء يجري محاصر عندما يحدث هذا مقارنة عندما لا يفعل ذلك.
حسنا، حاولت استخدام فيندويندو و فيندويندكس جنبا إلى جنب مع سيندمسيج ولكن لم أتمكن من العثور على مقبض النافذة الصحيح. ولكن بما أنني أعرف أن ويندوز مساج مربع الإبلاغ عن الخطأ سوف تكون ظهرت، راجعت لمعرفة ما إذا كان كان العملية الخاصة بها (وأنه هو). هذه العملية هي dwwin. exe (الدكتور واتسون وين) وكل ما كان علي القيام به هو هذا للسماح لنفسي للحصول على الصحيح المشكلة الحالية. استبدال كتلة التعليمات البرمجية الحالية أدناه لبيان ويتفوريكسيت () التي سبق لي.
proc. WaitForExit (60000)؛ // دقيقة واحدة.
بروسيس [] بروكاراي = Process. GetProcessesByName (& كوت؛ دوين & كوت؛)؛
فوريتش (عملية معالجة في بروكاراي)
كما تحققت لمعرفة ما إذا كنت قادرا على الحصول على process. MainWindowTitle ()، ولكن تم تعيينها إلى & كوت؛ & كوت ؛. لذلك هذا هو الإختراق وأنا حقا لا ترغب في استخدامه، لكنه يعمل من أجل التنفيذ الحالي.
جميع الردود.
هل يمكن أن تكون محددا مع الخطأ الذي تتلقاه؟
يحدث هذا فقط عند إعادة توجيه المدخلات والمخرجات؟
هل تقوم بتشغيل وحدة التحكم & كوت؛ سمد & كوت؛ ؟
إذا كان الجواب نعم ثم لديك لكتابة الخروج أيضا.
// العملية خرجت قبل المهلة الفترة.
// رسالة خطأ الطباعة؟
أود أن أحاول ذلك، ولكن الكثير من الإختراق. لدي العديد من الأوامر المختلفة التي تأخذ كميات مختلفة من الوقت (30 ثانية إلى 25 دقيقة) لذلك ليس هناك إعداد الوقت الحقيقي التي يمكن أن مكان دون تدمير أدائي. وقد عملت هذه الوظيفة بشكل صحيح لأوامر متعددة على مدى 6 أشهر الماضية والآن تقرر *** على لي. حاولت ذلك على جهاز كمبيوتر مختلف دون أي مشاكل (الذي هو حقا العبث معي). وأنا أعلم أنه ليس إخراج / خطأ إعادة توجيه لأنه يتم إنشاء نافذة جديدة على الملقم الذي أنا ريموتينغ إلى. بمجرد إغلاق هذه النافذة، عملية الخروج كما هو متوقع ويتم عرض الإخراج الصحيح على الجانب المستخدم.
أشكركم على مساعدتكم، لكنني أحبط حقا من هذه المشكلة.
دون معرفة تفاصيل الرسالة نحن مجرد التخمين في هذه المشكلة.
هل قمت بتثبيت الإصدار التجريبي 3.5 بيتا أو فيسوال ستوديو 2008 على الإطلاق؟
كيف تستخدم عملية لبدء البرنامج، process. Start (& كوت؛ file. exe & كوت؛)، أو تستخدم بروسيسستارتينفو؟
لا، لدي 2003 و 2005 مثبتة.
بروك = نيو بروسيس ()؛
بروكسي = نيو بروسيسستارتينفو ()؛
ثم قمت بإعداد مؤشر ترابط جديد لكل من ستانداردرور و ستانداردوتبوت.
ثم أكتب الأوامر و.
إذا (إعادة توجيه معيار الخروج)
بدء الموضوع ل ست. خارج.
إذا (إعادة توجيه الخطأ القياسي)
بدء الموضوع ل ست. خطأ.
Proc. WaitForExit ()؛ & لوت؛ -------- هذا هو المكان الذي تحدث فيه النافذة العامة للإبلاغ عن الأخطاء في ويندوز.
لقد ترجمت ما استطعت من النافذة أن ينبثق.
問題 が 発 生 し た た た め، ميكروسوفت فيسوال ستوديو 2005 を 終了 し ま す ご 不便 を お か か け し て 申 し 訳 あ り ま せ ん.
لأنه يحدث مشكلة، فإنه ينتهي ميكروسوفت فيسوال ستوديو 2005. نحن تطبيق إزعاج، ليس هناك عذر.
شكرا مرة أخرى على كل وقتك.
لماذا تفعل هذا؟ أنت لا تملك هذا البث حتى لا يجب إغلاقه.
هل هذا خطأ مطبعي؟ قبل أن تتحدث عن متغير اسمه & كوت؛ بروك & كوت ؛، ليس & كوت؛ بروك & كوت ؛. هل هذه مجرد إشارة خالية لأنك تحاول استدعاء طريقة على مرجع مختلف عن & كوت؛ بروك & كوت ؛؟
لا تريد إغلاق كائن سين حتى بعد خروج التطبيق إذا كنت تعيد التوجيه. إذا كان التطبيق يكتب إلى الإخراج القياسية أو يقرأ من المدخلات القياسية بعد إغلاق أي واحد من تلك يمكن أن يسبب استثناء.
هل لديك تتبع المكدس من رسالة الخطأ هذه؟
لا تريد إغلاق كائن سين حتى بعد خروج التطبيق إذا كنت تعيد التوجيه.
لا ينبغي للمرء أن يغلق أي من تلك التدفقات على الإطلاق. كائن العملية يمتلكها وهي المسؤولة عن التنظيف بعد نفسه. يجب على واحد في أفضل استدعاء عملية. ديسبوس () بعد الانتهاء مع كائن العملية.
أنا خلقت ستريموريتر قبل إنشاء كائن بروس عملية. ثم إعادة توجيه الإدخال بعد الأمر proc. Start ()، فكيف لا أملك هذا؟ بغض النظر، يمكنني إجراء التغيير لنقل sIn. Close () إلى ما بعد مكالمة ويتفوريكسيت لمعرفة ما إذا كان هذا يجعل أي تغييرات.
وكان بروك نوع، كان ينبغي أن يكون بروك.
مرة أخرى، أنها ليست رسالة خطأ، لذلك ليس هناك تتبع المكدس. عملية إعادة توجيه ماي ستانداردرور فارغة وتحتوي إعادة توجيه أوتبوت القياسية على ما توقعته، ولكن لا يوجد شيء يشير إلى حدوث خطأ. هذا هو السبب في أن كل شيء لا يزال يعمل بعد إغلاق إطار "الإبلاغ عن خطأ ويندوز".
سأقوم بنشر ما يحدث بعد نقل سطر sIn. Close () أسفل سطر ويتفوريكسيت ().
لا تريد إغلاق كائن سين حتى بعد خروج التطبيق إذا كنت تعيد التوجيه.
لا ينبغي للمرء أن يغلق أي من تلك التدفقات على الإطلاق. كائن العملية يمتلكها وهي المسؤولة عن التنظيف بعد نفسه. يجب على واحد في أفضل استدعاء عملية. ديسبوس () بعد الانتهاء مع كائن العملية.
طيب، أنا أفعل process. Close في كتلة أخيرا من بلدي التعليمات البرمجية، لذلك ينبغي أن تؤخذ الرعاية من ذلك الحين.
عفوا عن & كوت؛ لا تملك & كوت؛ التعليق الذي أدليت به سابقا. أنا مجرد عاد الغداء شكل وفقدان حقيقة أن عملية السيطرة على هذا.
process. Close هو الأسلوب الموصى به لإغلاق ستانداردينبوت و ستانداردوتبوت (و ستانداردورور) تيارات.
وسأكون قد فوجئت إذا لم تطلق طريقة ديسبوس إغلاق، على الأقل كجزء من عملها. وأود أن تفضل استخدام حقيقة أنه منذ عملية تنفذ إديسبوسابل (بشكل غير مباشر من خلال توسيع مكون الذي ينفذ ذلك)، ينبغي للمرء أن استدعاء التخلص منها والسماح بذلك لتنظيف السليم. لا أوصي بالاستدعاء process. Close بدلا من، بالإضافة إلى، process. Dispose.
process. Close هو الأسلوب الموصى به لإغلاق ستانداردينبوت و ستانداردوتبوت (و ستانداردورور) تيارات.
وسأكون قد فوجئت إذا لم تطلق طريقة ديسبوس إغلاق، على الأقل كجزء من عملها. وأود أن تفضل استخدام حقيقة أنه منذ عملية تنفذ إديسبوسابل (بشكل غير مباشر من خلال توسيع مكون الذي ينفذ ذلك)، ينبغي للمرء أن استدعاء التخلص منها والسماح بذلك لتنظيف السليم. لا أوصي بالاستدعاء process. Close بدلا من، بالإضافة إلى، process. Dispose.
كما أنا متأكد من أنك تعرف، وهذه هي مكافئ وظيفيا:
باستخدام (ميوبجيكت سوميثينغديسبوسابل =.)
// استخدام ميوبجيكت هنا.
// استخدام ميوبجيكت هنا.
إف (ميوبجيكت! = نول) myObject. Dispose ()؛
حتى إذا كانت التوصية الأولى هي استخدام كتلة استخدام، ثم التالي سيكون أفضل للاتصال ديسبوس، وليس إغلاق، عندما، كما قلت، كنت أعلم أنك فعلت مع الكائن.
من خلال استدعاء فقط إغلاق على شيء الذي ينفذ إديسبوسابل، المطور من المحتمل أن يحدث خطأ. إذا تخلص يفعل بعض تنظيف إضافية وراء مجرد التفويض لإغلاق، ثم المبرمج هو وضع نفسه حتى علة فقط عن طريق إغلاق إغلاق.
قد تكون هناك حالة لاستدعاء إغلاق، ولكن فقط إذا كنت لم تفعل مع الكائن، كما هو مبين في الجزء السفلي من الرد الأخير. ولكن عند القيام به، والدعوة التخلص منها.
كما أنا متأكد من أنك تعرف، وهذه هي مكافئ وظيفيا:
باستخدام (ميوبجيكت سوميثينغديسبوسابل =.)
// استخدام ميوبجيكت هنا.
// استخدام ميوبجيكت هنا.
إف (ميوبجيكت! = نول) myObject. Dispose ()؛
حتى إذا كانت التوصية الأولى هي استخدام كتلة استخدام، ثم التالي سيكون أفضل للاتصال ديسبوس، وليس إغلاق، عندما، كما قلت، كنت أعلم أنك فعلت مع الكائن.
من خلال استدعاء فقط إغلاق على شيء الذي ينفذ إديسبوسابل، المطور من المحتمل أن يحدث خطأ. إذا تخلص يفعل بعض تنظيف إضافية وراء مجرد التفويض لإغلاق، ثم المبرمج هو وضع نفسه حتى علة فقط عن طريق إغلاق إغلاق.
قد تكون هناك حالة لاستدعاء إغلاق، ولكن فقط إذا كنت لم تفعل مع الكائن، كما هو مبين في الجزء السفلي من الرد الأخير. ولكن عند القيام به، والدعوة التخلص منها.
ديسبوسابلكلاس أوبج = نيو ديسبوسابلكلاس ()؛
يمكن التخلص منها القابل للتصرف = أوبج كما لا يمكن إديسبوسابل؛
إف (ديسبوسابل! = نول)
ولكن نعم، هذا هو عبارة استخدام عبارة & كوت؛ مكافئ وظيفيا & كوت؛ إلى؛ ولكني لا أوافق على الاستدعاء صراحة التخلص في وجود & كوت؛ إغلاق & كوت؛ يجب أن يكون الأسلوب الخيار الأول بسبب عدم تحديد نطاق مع دعوة تخلص. على سبيل المثال، ما يلي:
باستخدام (عملية عملية = عملية جديدة ())
. هو خطأ في البنية.
وفيما يلي:
عملية العملية = عملية جديدة ()؛
// ليس هناك طريقة ل غوارنتي & كوت؛ عملية & كوت؛ متعود.
// يتم الوصول إليها بعد ما سبق.
هو خطأ وقت التشغيل (أوبجكتديسبوسيدكسيبتيون). لا يؤدي استخدام كلوز إلى حدوث خطأ وقت التشغيل:
عملية العملية = عملية جديدة ()؛
من الأفضل دائما أن تتاجر في خطأ وقت التجميع لخطأ وقت التشغيل.
لذلك، أنا وضعت نقطة توقف بعد الدعوة proc. WaitForExit () وأنا لم تصل بعد هذه النقطة. بحيث يبدو وكأنه مشكلة تماما.
لذلك، أنا وضعت نقطة توقف بعد الدعوة proc. WaitForExit () وأنا لم تصل بعد هذه النقطة. بحيث يبدو وكأنه مشكلة تماما.
كان لي تشغيل الخدمة، ولكن توقفت لأنه كان قد ركض لمدة 2 ساعة ولم تكن أبدا نقطة توقف أنه كان يجب أن تصل في غضون 10 دقيقة من لي بداية موكلي. أنا أونكومنتيد الخط sIn. Close () فقط الآن وإعادة بدء الخدمة والعميل وكل شيء يعمل كما فعل من قبل. يمكن أن تصل إلى نقطة التوقف بعد ويتفوريكسيت () وأكمل، مع رسالة خطأ تقرير ويندوز لا يزال (كما كان من قبل).
لذلك، في حالتي، أنا بحاجة إلى إغلاق تيار المدخلات لتكون قادرة على الخروج من العملية كما هو متوقع. هل هناك اي افكار اخرى؟
أستطيع أن ريكومنت الخط sIn. Close () إذا كنت ترغب في التحقق من شيء.
كان لي تشغيل الخدمة، ولكن توقفت لأنه كان قد ركض لمدة 2 ساعة ولم تكن أبدا نقطة توقف أنه كان يجب أن تصل في غضون 10 دقيقة من لي بداية موكلي. أنا أونكومنتيد الخط sIn. Close () فقط الآن وإعادة بدء الخدمة والعميل وكل شيء يعمل كما فعل من قبل. يمكن أن تصل إلى نقطة التوقف بعد ويتفوريكسيت () وأكمل، مع رسالة خطأ تقرير ويندوز لا يزال (كما كان من قبل).
لذلك، في حالتي، أنا بحاجة إلى إغلاق تيار المدخلات لتكون قادرة على الخروج من العملية كما هو متوقع. هل هناك اي افكار اخرى؟
أستطيع أن ريكومنت الخط sIn. Close () إذا كنت ترغب في التحقق من شيء.
كيف تستخدم المدخلات القياسية والإخراج القياسي؟ هل تستخدم أي أساليب ريادلين؟
بيتر، وجهة نظري هي:
إذا كنت لا ندعو ديسبوس على كائن الذي ينفذ (بشكل مباشر أو غير مباشر) إديسبوسابل، ثم كنت مجرد طلب للحصول على علة. أنا لا أريد أن أجادل على هذا لا نهاية لها على الرغم من. يمكنك الاستمرار في القيام بذلك بالطريقة التي تقوم بها، وأنا سوف عصا مع الألغام. طالما أننا لم يكن لديك للحفاظ على رمز بعضها البعض، غرامة.
وبالمناسبة، استخدم & كوت؛ استخدام & كوت؛ كتلة لا يحميك سواء. لا شيء يمنعك من إعلان المتغير خارج الكتلة (إذا كنت أذكر بشكل صحيح)، لذلك يمكن أن يكون لا يزال في النطاق بعد انتهاء كتلة. عليك أن تكون مجتهدا في كتابة التعليمات البرمجية الصحيحة. إذا كنت تعلن ذلك في صفحة & كوت؛ باستخدام & كوت؛ بيان، هذه طريقة واحدة. ولكن لرفض باستخدام محاولة / أخيرا نهج فقط لأنه يترك المتغير في نطاق ليست حقا هذه النقطة. فإنه لا يزال يحتاج إلى أن تخلص () 'د في مكان ما.
كان لي تشغيل الخدمة، ولكن توقفت لأنه كان قد ركض لمدة 2 ساعة ولم تكن أبدا نقطة توقف أنه كان يجب أن تصل في غضون 10 دقيقة من لي بداية موكلي. أنا أونكومنتيد الخط sIn. Close () فقط الآن وإعادة بدء الخدمة والعميل وكل شيء يعمل كما فعل من قبل. يمكن أن تصل إلى نقطة التوقف بعد ويتفوريكسيت () وأكمل، مع رسالة خطأ تقرير ويندوز لا يزال (كما كان من قبل).
لذلك، في حالتي، أنا بحاجة إلى إغلاق تيار المدخلات لتكون قادرة على الخروج من العملية كما هو متوقع. هل هناك اي افكار اخرى؟
أستطيع أن ريكومنت الخط sIn. Close () إذا كنت ترغب في التحقق من شيء.
كيف تستخدم المدخلات القياسية والإخراج القياسي؟ هل تستخدم أي أساليب ريادلين؟
مرة أخرى، هذا ليس استثناء الذي يجري القيت، لذلك أنا لا أرى أي تفاصيل الاستثناء. أنا لا أذهب مباشرة إلى كتلة الصيد في بلدي التعليمات البرمجية، وأنا استأنف مباشرة بعد دعوة ويتفوريكسيت (). النافذة التي أتلقىها هي نفسها التي تحصل عليها عند إغلاق أي منتج ميكروسوفت بشكل غير متوقع وتريد مس معلومات حول تحطم. لذلك مرة أخرى، لا توجد تفاصيل استثناء. ومع ذلك في واحدة من سجلات النظام، وأنا أتلقى ميساج (مترجمة من اليابانية)
& كوت؛ تحدث Devenv. exe تطبيق إروس، حدثت 8.0.50727.762 نسخة من الأخطاء وحدة msvcr80.dll، الإصدار 8.0.50727.762، حدثت أخطاء عنوان 0x00039001.
لمزيد من المعلومات، go. microsoft/fwlink/events. asp هيلو أند سوبورت سينتر يرجى الرجوع. & كوت؛
أنا إعادة توجيه المدخلات القياسية لتمرير في الأوامر المختلفة في لأنني كنت تواجه صعوبة في الحصول عليها للعمل كيف أردت شكل ستارتينفو. أنا إعادة توجيه تيارات الإخراج والخطأ للتحقق ما لديهم فيها بعد انتهاء العملية. هذا سوف يسمح لي للتحقق من أي شيء أود في أي تيار بمجرد الانتهاء. أنا أيضا لا تسمح أي من الإخراج أو خطأ إعادة توجيه المواضيع للانضمام حتى بعد اجتياز العملية استدعاء ويتفوريكسيت.
أنا حيرة تماما.
بيتر، وجهة نظري هي:
إذا كنت لا ندعو ديسبوس على كائن الذي ينفذ (بشكل مباشر أو غير مباشر) إديسبوسابل، ثم كنت مجرد طلب للحصول على علة. أنا لا أريد أن أجادل على هذا لا نهاية لها على الرغم من. يمكنك الاستمرار في القيام بذلك بالطريقة التي تقوم بها، وأنا سوف عصا مع الألغام. طالما أننا لم يكن لديك للحفاظ على رمز بعضها البعض، غرامة.
أنا لا أوافق. انها ليست & كوت؛ علة & كوت؛ إلى عدم استدعاء ديسبوس. لن يتم تحرير الموارد الخاصة بك على الفور، ولكن سوف غ الافراج عنهم إذا كان يحتاج إلى الذاكرة (على افتراض أن نمط التخلص يتم تنفيذها بشكل صحيح وتوجد النهائية). إذا كانت الفئة التي تستخدمها تنفذ & كوت؛ إغلاق & كوت؛ الطريقة التي لا تفعل كل الأشياء نفسها & كوت؛ تخلص & كوت ؛، إغلاق إما أن تكون موثقة على هذا النحو أو هناك خلل في الصف. لم أجد قط إطارا إطاريا ينفذ طريقة إديسبوسابل و كلوس () التي أدخلت & كوت؛ تسرب & كوت؛ عندما تم استدعاء كلوز دون استدعاء التخلص. النمط الساحق ل ديسبوس / كلوز هو أن ديسبوس كالس كلوز وكذلك تعيين & كوت؛ التخلص منها & كوت؛ علم (يستخدم لرمي أوبجكتديسبوسيدكسيبتيون).
في الواقع هذا هو مفصل في المرجع العام الإطار: & كوت؛ أحيانا اسم مجال معين هو أكثر ملاءمة من التخلص منها. على سبيل المثال، قد ترغب في تغليف ملف استخدام اسم الأسلوب إغلاق. في هذه الحالة، تنفيذ تخلص من القطاع الخاص وإنشاء طريقة إغلاق العام الذي يدعو التخلص. يوضح المثال التعليمات البرمجية التالي هذا النمط. يمكنك استبدال "إغلاق" باسم طريقة مناسب لنطاقك. & كوت؛ من تنفيذ الانتهاء من التخلص من الموارد غير المدارة والتخلص منها.
فضلا عن & كوت؛ بالنسبة لفئات معينة من الكائنات، مثل ملفات أو كائنات اتصال قاعدة البيانات، يمثل الأسلوب إغلاق بشكل أفضل العملية المنطقية التي يجب تنفيذها عند الانتهاء من كائن المستهلك مع الكائن. & كوت؛ من تحسين أداء الشفرة المدارة (على الرغم من أنه يحتوي أيضا على تفاصيل & كوت؛ في الحالات المكتوبة بشكل جيد، كلاهما متكافئ وظيفيا. & كوت؛ يعني أن استخدام كلوز أكثر وضوحا من خلال & كوت؛ أفضل يمثل & كوت ؛.)
وبالمناسبة، استخدم & كوت؛ استخدام & كوت؛ كتلة لا يحميك سواء. لا شيء يمنعك من إعلان المتغير خارج الكتلة (إذا كنت أذكر بشكل صحيح)، لذلك يمكن أن يكون لا يزال في النطاق بعد انتهاء كتلة. عليك أن تكون مجتهدا في كتابة التعليمات البرمجية الصحيحة. إذا كنت تعلن ذلك في صفحة & كوت؛ باستخدام & كوت؛ بيان، هذه طريقة واحدة. ولكن لرفض باستخدام محاولة / أخيرا نهج فقط لأنه يترك المتغير في نطاق ليست حقا هذه النقطة. فإنه لا يزال يحتاج إلى أن تخلص () 'د في مكان ما.
مرة أخرى، هذا ليس استثناء الذي يجري القيت، لذلك أنا لا أرى أي تفاصيل الاستثناء. أنا لا أذهب مباشرة إلى كتلة الصيد في بلدي التعليمات البرمجية، وأنا استأنف مباشرة بعد دعوة ويتفوريكسيت (). النافذة التي أتلقىها هي نفسها التي تحصل عليها عند إغلاق أي منتج ميكروسوفت بشكل غير متوقع وتريد مس معلومات حول تحطم. لذلك مرة أخرى، لا توجد تفاصيل استثناء. ومع ذلك في واحدة من سجلات النظام، وأنا أتلقى ميساج (مترجمة من اليابانية)
& كوت؛ تحدث Devenv. exe تطبيق إروس، حدثت 8.0.50727.762 نسخة من الأخطاء وحدة msvcr80.dll، الإصدار 8.0.50727.762، حدثت أخطاء عنوان 0x00039001.
لمزيد من المعلومات، go. microsoft/fwlink/events. asp هيلو أند سوبورت سينتر يرجى الرجوع. & كوت؛
افترضت أن طلبك كان يولد الرسالة (في هذه الحالة يجب أن تحصل دائما على استثناء وتتبع المكدس). لم يكن من الواضح أنك استئناف بعد الدعوة إلى ويتفوريكسيت (). يبدو لي مثل التطبيق الذي تقوم بتشغيله هو إنهاء بشكل غير طبيعي. هل تقوم بتشغيل devenv. exe؟ أنا لست متأكدا ما يمكنك القيام به في التطبيق الخاص بك لوقف تطبيق آخر من إنهاء بشكل غير طبيعي.
أنا إعادة توجيه المدخلات القياسية لتمرير في الأوامر المختلفة في لأنني كنت تواجه صعوبة في الحصول عليها للعمل كيف أردت شكل ستارتينفو. أنا إعادة توجيه تيارات الإخراج والخطأ للتحقق ما لديهم فيها بعد انتهاء العملية. هذا سوف يسمح لي للتحقق من أي شيء أود في أي تيار بمجرد الانتهاء. أنا أيضا لا تسمح أي من الإخراج أو خطأ إعادة توجيه المواضيع للانضمام حتى بعد اجتياز العملية استدعاء ويتفوريكسيت.
أنا حيرة تماما.
وبالتالي السبب في أنني ظللت تقول أنه لم يكن استثناء وأن رمز بلدي لا يزال فونسيتوند بقية الطريق إلى الانتهاء، كما هو متوقع.
وبالتالي. هل هناك أي طريقة للقبض على استثناء التطبيق من داخل عملية قيد التشغيل إذا لم تكن قد خرجت بعد. وهذا سيحدث ليكون السؤال الحقيقي.
حسنا، حاولت استخدام فيندويندو و فيندويندكس جنبا إلى جنب مع سيندمسيج ولكن لم أتمكن من العثور على مقبض النافذة الصحيح. ولكن بما أنني أعرف أن ويندوز مساج مربع الإبلاغ عن الخطأ سوف تكون ظهرت، راجعت لمعرفة ما إذا كان كان العملية الخاصة بها (وأنه هو). هذه العملية هي dwwin. exe (الدكتور واتسون وين) وكل ما كان علي القيام به هو هذا للسماح لنفسي للحصول على الصحيح المشكلة الحالية. استبدال كتلة التعليمات البرمجية الحالية أدناه لبيان ويتفوريكسيت () التي سبق لي.
proc. WaitForExit (60000)؛ // دقيقة واحدة.
بروسيس [] بروكاراي = Process. GetProcessesByName (& كوت؛ دوين & كوت؛)؛
فوريتش (عملية معالجة في بروكاراي)
كما تحققت لمعرفة ما إذا كنت قادرا على الحصول على process. MainWindowTitle ()، ولكن تم تعيينها إلى & كوت؛ & كوت ؛. لذلك هذا هو الإختراق وأنا حقا لا ترغب في استخدامه، لكنه يعمل من أجل التنفيذ الحالي.
تقوم ميكروسوفت بإجراء استطلاع عبر الإنترنت لفهم رأيك لموقع مسن على الويب. إذا اخترت المشاركة، سيتم تقديم الاستبيان عبر الإنترنت لك عند مغادرة موقع مسن على ويب.

Comments

Popular posts from this blog

مسكس فوريكس توب 20

مجانا فوريكس إشارات مجموعة ال واتساب

فتح قسط إشارة النقد الاجنبى