Monday 26 February 2018

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


عملية ويتفوريكسيت استثناء
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
ويتفوريكسيت () يلقي استثناء c #
أدناه هو رمز بلدي لبدء العملية، وضعت رابط للعرض فقط. أريد هذه العملية لتشغيل في الخلفية دون فتح المتصفح. أيضا الخط الثاني يلقي استثناء.
مرجع كائن لم يتم تعيين إلى مثيل كائن.
لأنه عندما تبدأ عملية بشكل غير مباشر لن تحصل على كائن عملية (ثم في عملية قضيتك هو دائما فارغة والسطر الثاني يلقي استثناء).
اسمحوا لي أن أشرح ما أعنيه بشكل غير مباشر: إذا كنت لا تحدد قابلة للتنفيذ ولكن كنت تعطي وثيقة (أو مورد) ثم سيتم تنفيذها من خلال الفعل قذيفة. في هذه الحالة قد تكون عملية (ري) المستخدمة. في هذه الحالات، ستعود عملية (ستارت () فارغة.
إنشاء مستند ورد فارغ 'c: \ test. docx'. إغلاق كافة مثيلات ورد. إكسكيوت Process. Start ("c: \ test. docx")؛ // ريتورنس a بروسيس إكسامبل إكسكيوت Process. Start ("c: \ test. docx")؛ // ريتورنس نول.
يمكنك ببساطة حل هذا؟ عفيك لا يمكنك لأن عملية يستخدم شليكسكوتيكس مع هيكل شليكسيكوتينفو لبدء العملية. قراءة وثائق شليكسيكوتينفو لحقل هبروسيس سترى ما يلي:
مقبض إلى التطبيق الذي بدأ حديثا. يتم تعيين هذا العضو على العودة ودائما نول إلا إذا تم تعيين فماسك إلى SEE_MASK_NOCLOSEPROCESS. حتى إذا تم تعيين فماسك إلى SEE_MASK_NOCLOSEPROCESS، هبروسيس سيكون نول إذا لم يتم إطلاق أي عملية. على سبيل المثال، إذا كان المستند الذي سيتم تشغيله هو ورل ويتم تشغيل مثيل إنترنيت إكسبلورر بالفعل، فإنه سيتم عرض المستند. لا يتم إطلاق عملية جديدة، وسوف يكون هبروسيس نول. ملاحظة لا يقوم شليكسكوتيكس دائما بإرجاع هبروسيس، حتى إذا تم تشغيل عملية نتيجة المكالمة. على سبيل المثال، لا يعود هبروسيس عند استخدام SEE_MASK_INVOKEIDLIST لاستدعاء إكونتيكستمينو.
ملاحظة إذا كنت تقوم بتشغيل عملية جديدة فقط لفتح ورل والحصول على ملف تم إنشاؤه من جانب الخادم ثم يجب اتباع اقتراح داميان واستخدام WebClient. DownloadFile ().
يمكن لعملية. Start () إرجاع مرجع فارغ:
عودة نوع القيمة: System. Diagnostics. Process.
مكون عملية جديد مقترن بمورد العملية، أو فارغ، إذا لم يتم بدء تشغيل أي مورد عملية (على سبيل المثال، إذا تمت إعادة استخدام عملية موجودة).
عندما يحدث ذلك، ستحصل على نولريفيرنسكسيبتيون عند محاولة الاتصال ويتفوريكسيت ()

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

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

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

No comments:

Post a Comment