我們有一個用.Net 4.0編寫的C#WPF應用程序,它有一些相對簡單的數據綁定和網格功能。WPF C#應用程序性能
造型包含一些「調整」,包括一些懸停顏色等。
在3臺機器上,我們遇到了一些非常奇怪的用戶界面性能問題。
實際上,重新啓動後,應用程序運行良好,但經過一定的(未確定的)時間後,UI變得令人難以置信的緩慢。例如,將鼠標懸停在按鈕上,在懸停顏色樣式應用/呈現之前會有幾秒鐘的延遲。
該機器具有幾乎相同的規格。圖形驅動程序已更新,星號設置是兩個NVidia Quadro 290卡。此外,我們製作了一個僅包含一些測試UI組件(包括Fluent Ribbon)並且沒有代碼的「測試」應用程序。問題仍然存在。
我已經運行Windows Performance Suite來深度運行運行時間WPF,並且非常奇怪的是,如果勾選「禁用髒區域支持」選項,UI將返回正常響應。我的理解是,如果有的話,這應該會進一步降低性能!
我在這裏嘗試其他任何東西的損失。 DotTrace性能分析表明大部分應用程序時間都花在PresentationFramework.dll中。
[編輯]所有機器都是Windows XP SP3。
[編輯]這可能發生在所有機器上,並且應用程序通常不允許運行足夠長的時間來解決問題。我們現在正在測試這個。
[編輯]我還應該指出,我們正在試驗修補程序詳細的here。目前它已安裝在單臺機器上,我會相應更新。
[編輯 - 24小時後]因此,兩臺機器現在已經在一夜之間運行相同的代碼。在我的機器上(從來沒有證明這個問題),在初次登錄應用程序後非常緩慢,但不到一分鐘後恢復正常。 (我把它放在機器上清楚地將東西從硬盤上取下來)。在另一臺機器上(這通常表明問題),幾秒鐘後應用程序改善,但與我的相比,現在仍然不振。
[EDIT - 48小時後]在試驗機,測試應用現在是48小時運行後完全沒有反應(鎖定)。在同一臺機器上,一個輕量級的'外殼'WPF應用程序(包含一個選項卡控件,一些按鈕和一些面板和網格)仍在運行並且完全響應。因此,這些更復雜的控件中的某些內容會導致此問題......這確實會指向可能是根本原因的(可能)觸發器和委託。我會再次分析應用程序/控件。同時,有沒有人有任何關於如何確保應用程序定期自行清理的建議?因爲我們在這裏查看第三方控件,所以我的編輯選項是有限的!
希望能提供任何提示!
是否可以提供代碼?另外一些SO'er可能也想嘗試一下。 問題出現之前的最短時間是多少? – Default 2012-01-11 12:30:56
如果需要,我可以提供代碼......但我們的測試應用程序目前僅涉及僅使用Fluent功能區(可從CodePlex中載入)和空網格。除了明顯的init調用之外,沒有任何代碼。如果它能使生活更輕鬆,我當然會提供這種壓縮。 – Nick 2012-01-11 12:34:40
不要期望太多的原型系統。作爲第一步,我會檢查代表使用情況。你經常使用嗎? – 2012-01-11 12:34:52