首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我使用Process.Start()时,为什么我的应用程序启动时间变慢了?

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

Stack Overflow用户
提问于 2010-08-27 09:33:20
回答 3查看 1.6K关注 0票数 6

我试图分析我的应用程序的启动时间,所以我编写了一个小的C#程序,它将使用Process.Start()方法启动我的应用程序,并使用秒表对其计时。

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

你知道为什么使用Process.Start启动可执行文件会对启动时间产生如此大的影响吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-28 15:17:41

谢谢你的帮助。我有答案了,而且它与Process.Start无关。

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

票数 1
EN

Stack Overflow用户

发布于 2010-08-27 09:54:03

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

您可能希望在启动Process对象后立即对其调用Dispose() (以避免不必要的长时间进程监控),但无法完全避免相关的开销。

票数 0
EN

Stack Overflow用户

发布于 2010-08-27 10:13:21

简单地说,你实际上是在启动两个进程,而不仅仅是一个进程。这就是为什么它需要更长的时间。

当你双击你的应用程序时,你只加载了一个应用程序,所有的都是DLL的。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3580733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档