2011-06-17 167 views
5

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

回答

2

计算机闲置时是否还需要30秒才能启动(即,如果在计算机不忙时加载窗口时双击启动它)是否也需要30秒?

在Windows启动过程中,计算机通常忙于大量的内容,这可能会导致应用程序缓慢。那么你可以做的事情不多。

但是,为了提高WPF应用程序启动时的一般提示:

  • 只有实例你真正需要展现给用户最初
  • 降低你的控制/窗口的复杂的控制。
  • 不要做任何时间在你控制的建设者耗时&窗口
    • 喜欢读书,从本地磁盘上的文件即使是无辜的东西可能很耗时,如果磁盘是忙于其他的东西(像它通常是在Windows启动)
    • Web服务调用可能需要花费很长一段时间,如果在网络尚未完全初始化尚未
    • 一个简单的解决方法是卸载重活到BackgroundWorker或使用异步调用做I/O和网络请求

还有一个设置,你可以把app.config告诉运行时不与证书认证组件(此检查可能需要很长的时间,尤其是冷起动):

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

一些更一般提示可以在MSDN网站Application Startup Time上找到。

+1

与在冷启动时没问题,双击,大约需要2秒启动。问题是在Windows启动。我见过像Windows Live Messenger这样的应用程序,它们在Windows启动时立即启动,但这些应用程序都是本机应用程序我可以接近WPF中类似的东西吗? – pfongkye 2011-06-17 13:12:06

+0

查看你的启动/构造函数代码,并查找诸如磁盘I/O和网络I/O之类的东西,并将它们移动到后台线程/异步代码。也许你的应用程序阻止等待尚未被Windows初始化的网络 – 2011-06-18 07:04:02

+0

@IsakSavo其实简单的WPF Hello World应用程序演示了相同的行为 – Poma 2013-03-18 08:22:43

0

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

0

使用regedit在

HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \ Explorer中\序列化创建DWORD注册表

称为StartupDelayInMSec

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

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

注意:序列化密钥可能不存在。
您可以通过右击资源管理器创建并选择新建 - >关键

相关问题