当我使用Process.Start()时,为什么我的应用程序启动时间会变慢?

时间:2010-08-27 01:33:20

标签: c# app-startup

我正在尝试分析应用程序的启动时间,因此我编写了一个小型C#程序,它将使用Process.Start()方法启动我的应用程序,并使用秒表计时。

当我尝试自己启动应用程序时(只需单击它),可能需要2-3秒。当我尝试使用我的测试程序启动应用程序时,需要8-10秒。启动时间的大小始终不同。

任何想法为什么使用Process.Start启动可执行文件都会影响启动时间?

3 个答案:

答案 0 :(得分:1)

感谢您的帮助。我有答案,它与Process.Start无关。

在我开始这个过程之后,我正在等待一个特定的窗口句柄,看起来知道应用程序实际出现了。循环太紧了。我在while循环中引入了200 ms的睡眠,启动时间再次正常。

答案 1 :(得分:0)

您的线索应该是Process.Start()名称空间中的System.Diagnostics。当您以这种方式启动进程时,您将附加一堆监视器/检查器。这肯定会增加开销。

您可能希望在启动Dispose()对象后立即尝试调用Process(以避免不必要地延长进程监控),但您将无法完全避免关联开销。

答案 2 :(得分:0)

简单地说,你实际上是开始两个过程而不仅仅是一个过程。这就是为什么需要更长的时间。

当您双击应用程序时,您只加载一个应用程序及其所有DLL。

运行诊断应用程序时,首先要加载第一个带有.NET程序集的应用程序,这些程序集必须是JIT(即时编译:不是免费的)。只有在完成所有操作之后,才能启动OTHER应用程序。如果你的目标应用程序也是一个.NET应用程序,那么整个循环就会重复。