2011-06-17 209 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秒。

注意:序列化密鑰可能不存在。
您可以通過右擊資源管理器創建並選擇新建 - >關鍵

相關問題