عملية طريقة ويتفوريكسيت


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

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

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

Xamarin.
طريقة System. Diagnostics. Process. WaitForExit.
يرشد مكون العملية إلى الانتظار لعدد الملي ثانية المحدد للعملية المقترنة للخروج.
المعلمات.
صحيح إذا خرجت العملية المرتبطة بها؛ خلاف ذلك، كاذبة.
يتم استخدام التحميل الزائد process. WaitForExit (Int32) لجعل الانتظار مؤشر الترابط الحالي حتى ينتهي العملية المقترنة. يؤدي هذا التحميل الزائد إلى توجيه مكون العملية إلى انتظار مقدار محدود من الوقت لإنهاء العملية. إذا لم يتم إنهاء العملية المقترنة بنهاية الفترة الزمنية بسبب رفض طلب الإنهاء، يتم إرجاع فالس إلى إجراء الاستدعاء. يمكنك تحديد رقم سالب (Timeout. Infinite) لمللي ثانية، و process. WaitForExit (Int32) سوف يتصرف نفس الزائد process. WaitForExit. إذا قمت بتمرير 0 (صفر) إلى الأسلوب، فإنه يرجع صحيح فقط إذا كانت العملية قد خرجت بالفعل؛ وإلا فإنه يعود فورا كاذبة.
في net_v35_long والإصدارات السابقة، إذا كان ميلي ثانية واحدة -1، ينتظر التحميل الزائد process. WaitForExit (Int32) لميثانية Int32.MaxValue (حوالي 24 يوما)، وليس إلى أجل غير مسمى.
عند إعادة توجيه الإخراج القياسي إلى معالجات أحداث غير متزامنة، فمن الممكن أن معالجة الإخراج لم تكتمل عند إرجاع هذه الطريقة. لضمان اكتمال معالجة الحدث غير المتزامن استدعاء الزائد process. WaitForExit الذي لا يأخذ أي معلمة بعد تلقي صحيح من هذا التحميل الزائد. للمساعدة في ضمان معالجة الحدث Process. Exited بشكل صحيح في تطبيقات ويندوز فورمز، قم بتعيين الخاصية Process. SynchronizingObject.
عند إنهاء عملية مقترنة (يتم إيقاف تشغيلها بواسطة نظام التشغيل من خلال إنهاء عادي أو غير طبيعي)، يقوم النظام بتخزين المعلومات الإدارية حول العملية ويعود إلى المكون الذي كان يسمى process. WaitForExit (Int32). يمكن بعد ذلك مكون العملية الوصول إلى المعلومات، والتي تتضمن process. ExitTime، باستخدام process. Handle إلى العملية التي تم الخروج منها.
لأن العملية المرتبطة قد خرجت، الخاصية process. Handle المكون لم يعد يشير إلى مورد عملية موجود. بدلا من ذلك، يمكن استخدام المقبض فقط للوصول إلى معلومات نظام التشغيل حول مورد العملية. النظام على بينة من مقابض للخروج من العمليات التي لم يتم إصدارها من قبل مكونات العملية، لذلك فإنه يحتفظ المعلومات process. ExitTime و process. Handle في الذاكرة حتى يقوم مكون العملية بتحرير الموارد على وجه التحديد. لهذا السبب، في أي وقت استدعاء process. Start لنسخة العملية، استدعاء process. Close عند إنهاء العملية المرتبطة ولم تعد بحاجة إلى أية معلومات إدارية حول هذا الموضوع. process. Close يحرر الذاكرة المخصصة لعملية خرجت.
المتطلبات.
الجمعية: النظام (في System. dll)
إصدارات الجمعية: 1.0.5000.0، 2.0.0.0، 4.0.0.0.
System. Diagnostics مساحة الاسم.
البنيات.
واجهات.
التعدادات.
المنتجات زامارين فيسوال ستوديو زامارين تيست كلاود زامارين إنزيتس زامارين ونيفرزيتي زامارين ستوديو فيسوال ستوديو Xamarin. Forms تطبيقات ما قبل البناء مونو ليسنسينغ كومباني من نحن العملاء الشركاء المدونة الوظائف الصحافة التسعير مركز المطور جيت ستارتد غيدس وصفات Xamarin. iOS واجهات برمجة التطبيقات Xamarin. Android واجهات برمجة التطبيقات زامارين. ماك أبيس منتديات الفيديو الاتصال دعم المطور الموارد الخدمات الاستشارية الاتصال المبيعات تويتر جيثب كومة تجاوز الفيسبوك + يوتيوب.
شركة زامارين، كشركة تابعة مملوكة بالكامل لشركة ميكروسوفت تعمل ككيان قانوني منفصل، تلتزم ببيان خصوصية ميكروسوفت: الخصوصية & أمب؛ بسكويت.

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

Comments