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

pfo*_*kye 5 windows wpf startup

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

Isa*_*avo 2

当计算机空闲时是否也需要 30 秒才能启动(即,如果在计算机不忙于加载 Windows 时通过双击启动它)?

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

但是,有一些改进 WPF 应用程序启动的一般技巧:

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

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

<configuration>
  <runtime>
    <generatePublisherEvidence enabled="false"/> 
  </runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)

MSDN 站点上的应用程序启动时间提供了一些更通用的提示。