لماذا يكون وقت بدء تشغيل التطبيق أبطأ عند استخدام Process.Start ()؟

StackOverflow https://stackoverflow.com/questions/3580733

  •  01-10-2019
  •  | 
  •  

سؤال

أحاول تحديد وقت بدء تشغيل طلبي ، لذلك كتبت برنامج C# صغيرًا سيبدأ طلبي باستخدام طريقة Process.Start () ، ووقت استخدام ساعة توقيت.

عندما أحاول بدء التطبيق بنفسي (بمجرد النقر فوقه) ، ربما يستغرق الأمر من 2 إلى 3 ثوانٍ. عندما أحاول بدء التطبيق باستخدام برنامج الاختبار الخاص بي ، يستغرق 8-10 ثانية. يختلف وقت بدء التشغيل باستمرار في هذا الحجم.

أي فكرة عن سبب استخدام Process.start لبدء تنفيذ سيؤثر على أوقات بدء التشغيل كثيرًا؟

هل كانت مفيدة؟

المحلول

شكرا لجميع التعليمات الخاصة بك. لديّ الإجابة ، وهو أمر لا علاقة له بالمعالجة.

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

نصائح أخرى

يجب أن يكون دليلك Process.Start() في ال System.Diagnostics مساحة الاسم. عندما تبدأ عملية بهذه الطريقة ، فأنت ترفق مجموعة من الشاشات/المفتشين. هذا بالتأكيد يضيف النفقات العامة.

قد ترغب في محاولة الاتصال فورًا Dispose() على ال Process كائن بعد بدء تشغيله (من أجل تجنب مراقبة العمليات التي لا داعي لها) ، لكنك لن تكون قادرًا على تجنب النفقات العامة المرتبطة تمامًا.

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

عند النقر نقرًا مزدوجًا على تطبيقك ، تقوم بتحميل تطبيق واحد فقط وكل ما هو DLL.

عندما تقوم بتشغيل تطبيق التشخيص الخاص بك ، تقوم أولاً بتحميل التطبيق الأول باستخدام مجموعات .NET التي يجب أن تكون jit'd (فقط في تجميع الوقت: وهو ليس مجانيًا). عندها فقط بعد كل ذلك ، يتم البدء في التطبيق الآخر. إذا كان التطبيق المستهدف هو تطبيق .NET ، فإن الدورة بأكملها تكرر نفسها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top