如何在Windows启动时优化WPF应用程序启动

时间:2011-06-17 09:03:11

标签: wpf windows startup

我实现了一个WPF应用程序并将其注册为在Windows启动时启动。我的应用程序是一个简单的登录应用程序,当用户登录时出现在图标托盘中。问题是在Windows启动后显示自己需要大约30秒。我试过Ngen没有取得很大的成功。我想避免实现启动画面。我希望我的WPF应用程序在Windows启动后“立即”出现,类似于Windows Live Messenger。我能做些什么来减少它的启动时间?除了本地编码之外,我还有其他选择吗? 感谢。

4 个答案:

答案 0 :(得分:2)

计算机空闲时是否还需要30秒才能启动(例如,如果您在计算机未忙于加载窗口时双击启动它)?

在Windows启动期间,计算机通常忙于处理大量内容,这可能会导致应用程序运行缓慢。那时你无能为力。

但是,一些改进WPF应用程序启动的一般提示:

  • 仅实例化您最初需要向用户显示的控件
  • 降低控件/窗口的复杂性。
  • 不要在控件的构造函数中花费任何时间。视窗
    • 如果磁盘忙于其他东西(比如通常在Windows启动期间),即使从本地磁盘读取文件等无辜的东西也会非常耗时。
    • 如果网络尚未完全初始化,则Web服务调用可能需要很长时间
    • 一个简单的解决方案是将繁重的工作卸载到BackgroundWorker或使用异步调用来执行I / O和网络请求

还有一个设置可放在app.config中,告诉运行时不要使用证书对程序集进行身份验证(此检查可能需要很长时间,尤其是冷启动):

<configuration>
  <runtime>
    <generatePublisherEvidence enabled="false"/> 
  </runtime>
</configuration>

Application Startup Time上的MSDN网站上提供了一些更一般的提示。

答案 1 :(得分:0)

也许this site会对您有所帮助。它列出了以前启动应用程序(如果是服务)或Windows登录后的一些选项。它们涉及一些注册表黑客攻击,您需要在卸载期间撤消它们。

答案 2 :(得分:0)

答案 3 :(得分:0)

使用regedit,在

的注册表中创建 DWORD
  

HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \ Explorer中\序列化

名为 StartupDelayInMSec

默认值应设置为0,但要仔细检查。

启动后,我的应用程序启动时间缩短约10秒。

注意:Serialize Key可能不存在 您可以通过右键单击 Explorer 并选择 New - &gt;来创建它。键