我實現了一個WPF應用程序,並在Windows啓動時將其註冊爲啓動。我的應用程序是一個簡單的登錄應用程序,當用戶登錄時出現在圖標托盤中。問題是,Windows啓動後大約需要30秒才能顯示自己。我試過Ngen沒有取得巨大成功。我想避免實施啓動畫面。我希望我的WPF應用程序在Windows啓動後「立即」出現,類似於Windows Live Messenger的功能。我能做什麼以減少啓動時間?除了原生編碼外,還有其他選擇嗎? 謝謝。如何在Windows啓動時優化WPF應用程序啓動
5
A
回答
2
計算機閒置時是否還需要30秒才能啓動(即,如果在計算機不忙時加載窗口時雙擊啓動它)是否也需要30秒?
在Windows啓動過程中,計算機通常忙於大量的內容,這可能會導致應用程序緩慢。那麼你可以做的事情不多。
但是,爲了提高WPF應用程序啓動時的一般提示:
- 只有實例你真正需要展現給用戶最初
- 降低你的控制/窗口的複雜的控制。
- 不要做任何時間在你控制的建設者耗時&窗口
- 喜歡讀書,從本地磁盤上的文件即使是無辜的東西可能很耗時,如果磁盤是忙於其他的東西(像它通常是在Windows啓動)
- Web服務調用可能需要花費很長一段時間,如果在網絡尚未完全初始化尚未
- 一個簡單的解決方法是卸載重活到
BackgroundWorker
或使用異步調用做I/O和網絡請求
還有一個設置,你可以把app.config
告訴運行時不與證書認證組件(此檢查可能需要很長的時間,尤其是冷起動):
<configuration>
<runtime>
<generatePublisherEvidence enabled="false"/>
</runtime>
</configuration>
一些更一般提示可以在MSDN網站Application Startup Time上找到。
0
也許this site會對您有所幫助。它列出了您之前(如果是服務)或Windows登錄後啓動應用程序的一些選項。它們涉及一些註冊表黑客行爲,在卸載過程中您需要撤消註冊表。
0
0
使用regedit在
HKEY_CURRENT_USER \軟件\微軟\的Windows \ CurrentVersion \ Explorer中\序列化創建DWORD註冊表
稱爲StartupDelayInMSec。
默認值應該設置爲0,但仔細檢查。
啓動後,我的應用程序啓動時間縮短了約10秒。
注意:序列化密鑰可能不存在。
您可以通過右擊資源管理器創建並選擇新建 - >關鍵
相關問題
- 1. 如何在Windows啓動時自動啓動應用程序?
- 2. 在Windows啓動時啓動應用程序啓動
- 3. 如何在啓動電腦時啓動Windows應用程序
- 4. 如何在Windows啓動時啓動應用程序?
- 5. 強制WPF應用程序在Windows啓動時最大化
- 6. 如何在Windows啓動時啓動最小化的ClickOnce應用程序?
- 7. 如何在應用程序啓動時最大化WPF頁面?
- 8. 如何確定Windows應用程序是否在Windows啓動時自動啓動?
- 9. WiX:如何註冊Windows啓動時啓動的應用程序?
- 10. 代碼自動在Windows啓動時啓動Java應用程序
- 11. 啓動應用程序在啓動時
- 12. 在啓動時啓動應用程序
- 13. 在啓動時啓動應用程序
- 14. 在啓動時自動啓動後最小化應用程序
- 15. 在啓動Windows啓動後立即啓動Qt應用程序
- 16. 如何在Google Glass啓動時自動啓動應用程序?
- 17. 如何在應用程序啓動時自動啓動Delayed_Job?
- 18. Windows 8,在啓動時啓動應用程序
- 19. Tidesdk - 在Windows啓動時啓動桌面tidesdk應用程序
- 20. 在Windows 7啓動時啓動程序(自動啓動)
- 21. WPF啓動時應用程序崩潰
- 22. 如何使用自動啓動在系統啓動時啓動應用程序?
- 23. 在應用程序啓動時啓動應用程序類
- 24. 程序啓動在Windows啓動應用程序
- 25. 如何在應用程序啓動時「自動」啓用GPS?
- 26. 如何在計算機上啓動wpf應用程序啓動程序盟友?
- 27. Windows 8的應用程序啓動器與WPF應用程序
- 28. 如何在應用程序啓動時
- 29. 如何在Windows 7啓動時啓動python shell程序?
- 30. 如何在應用程序啓動時啓動Android服務?
與在冷啓動時沒問題,雙擊,大約需要2秒啓動。問題是在Windows啓動。我見過像Windows Live Messenger這樣的應用程序,它們在Windows啓動時立即啓動,但這些應用程序都是本機應用程序我可以接近WPF中類似的東西嗎? – pfongkye 2011-06-17 13:12:06
查看你的啓動/構造函數代碼,並查找諸如磁盤I/O和網絡I/O之類的東西,並將它們移動到後臺線程/異步代碼。也許你的應用程序阻止等待尚未被Windows初始化的網絡 – 2011-06-18 07:04:02
@IsakSavo其實簡單的WPF Hello World應用程序演示了相同的行爲 – Poma 2013-03-18 08:22:43