立即显示启动画面

我们正在处理WinForm应用程序的慢启动(它是一个大型应用程序并具有许多控制程序集)。 控制组件是DevComponents。 应用Ngen来防止jit编译,但加载时间略有下降。

该应用程序具有启动画面,但它仅在应用程序启动后的12秒内出现。 是否有任何方法可以立即显示启动画面?

我们目前的建议是使用启动画面创建一个轻量级应用程序,在单独的进程中运行主应用程序,并在完成主应用程序初始化时关闭轻量级应用程序。

对于使用C ++编写并使用本机Windows API的轻量级,可重用的启动画面组件,请参阅Stefan Olson的启动画面 。 Cody Gray提出的方法是从单独的非CLR过程开始,然后加载主CLR应用程序。

我必须在上一份工作中实现完全相同的东西,我可以确认方法运行良好 – 用户点击开始菜单中的程序图标和出现的初始屏幕之间的时间只有几毫秒,所以感觉’瞬间”。

我会说你赞同你目前的建议。

Winforms应用程序将不会显示,除非它已完全加载到内存中,并且因为它需要时间,我建议有一个加载器应用程序,它显示启动并执行主要的巨大应用程序(作为子进程)。

在巨大的应用程序中,加载后终止父应用程序。 这不会杀死孩子,BTW。

我过去所做的快速而肮脏的方式是拥有两个应用程序,即主应用程序和启动画面应用程序。 主应用程序是正常的,包括所有重量级的DLL,控件等。启动画面应用程序只是一个应用程序和一个Windows窗体,所有不必要的引用DLL都从项目中剥离 – 实际上你可以更进一步使用较轻的.NET框架,如紧凑的.NET框架或早期版本的.NET框架,如1.X或2.0。

你要做的是启动splashscreen应用程序并立即显示单个启动画面。 有一个Windows窗体计时器(设置为100毫秒)并启用计时器作为窗体的Load事件的最后一行。 当计时器触发时,禁用计时器,然后启动您的实际应用程序。 请参阅此讨论以了解如何执行此操作。 现在主要应用程序将开始启动。 一旦应用程序完成初始化并且可能加载第一个表单,然后让主应用程序终止启动屏幕应用程序。 有关杀死应用程序的更多信息。