WPF 應用程式效能優化

2022-09-18 23:51:13 字數 2064 閱讀 9825

開發效率:能使用xaml實現的就不使用者cs後台程式編寫

資料繫結:資料繫結使用的是屬性,不是字段

public observablecollectionlist  = new observablecollection();

dispatcher.invoke(() =>

, dispatcherpriority.background);

防止卡頓:使用backgroundworker防止ui卡頓,backgroundworker元件提供了一種執行非同步操作(後台執行緒)的同時還能顯示操作進度的解決方案。

backgroundworker worker = new backgroundworker();

worker.dowork += (o, e) =>

;worker.runworkercompleted += (o, e) =>

;worker.runworkerasync();

通知主線程:dispatcher.invoke(() => ) 或者 dispatcher.invokeasync(() => ) 或者 dispatcher.begininvoke(() => ),invoke會阻塞執行緒,直到invoke裡的**完成,invokeasync非同步執行, begininvoke後台執行**。

避免將資料繫結到label.content屬性,如果使用標籤將資料繫結到string屬性,這將導致效能下降。這是因為每次更新string源時,都會丟棄舊的字串物件,並建立乙個新的string。如果label的內容是簡單文字,則將其替換為textblock,然後繫結到text屬性。

畫筆上的不透明度而不是元素,如果使用「畫筆」設定元素的「填充」或「描邊」,則最好在「畫筆」上設定「不透明度」,而不是設定元素的「不透明度」屬性。修改元素的「不透明度」屬性時,它可能導致wpf建立臨時曲面,從而導致效能下降。

使用縮小的影象尺寸,如果您的應用要求顯示較小的縮圖,請考慮建立縮小尺寸的影象。預設情況下,wpf將載入並解碼影象到其完整尺寸。如果要載入完整的影象並將它們縮小到itemscontrol等控制項中的縮圖大小,這可能是許多效能問題的根源。如果可能,將所有影象合併為乙個影象,例如由多個影象組成的膠片。

降低bitmapscalingmode,預設情況下,wpf使用高質量的影象重取樣演算法,該演算法有時會消耗系統資源,這會導致幀速率下降並導致動畫停頓。而是將bitmapscalingmode設定為lowquality,以從「質量優化」演算法切換為「速度優化」演算法。

在單獨的執行緒上載入資料,效能問題,ui凍結以及停止響應的應用程式的乙個非常常見的**是如何載入資料。確保您在乙個單獨的執行緒上非同步載入資料,以免ui執行緒超載。在ui執行緒上載入資料將導致非常差的效能以及終端使用者的整體體驗。每個wpf開發人員都應在其應用程式中使用多執行緒。

記憶體洩露主要原因分析:靜態引用、未登出的事件繫結、非託管**資源使用等。對於靜態物件盡量小或者不用,非託管資源可通過手動dispose來釋放。

使用mvvm模式繫結datacontext或是直接給列表控制項繫結資料來源的情況下,關閉窗體時,最好將繫結屬性賦乙個空值

protected override void onclosed(eventargs e)

對image做動畫處理的時候(如調整大小等),可以使用這條語句renderoptions.setbitmapscalingmode(myimage,bitmapscalingmode.lowquality)

renderoptions.setbitmapscalingmode(img,bitmapscalingmode.nearestneighbor);

renderoptions.setcleartypehint(img,cleartypehint.enabled);

C 應用程式效能優化

本文選自c 應用程式效能優化 第2版 一書 總 序 去國離家十六載後,2006年,當我再次歸來凝視上海這座不夜城時,不由地感慨世界真的變小了 變平了,中國作為地球村的一員,正以驚人的速度發展變化著。世界正改變著中國,中國也不斷影響著世界。在備感欣喜振奮之餘,我亦常常思索,在乙個越來越小 越來越平的世...

C 應用程式效能優化

本文選自一書 總 序 去國離家十六載後,2006年,當我再次歸來凝視上海這座不夜城時,不由地感慨世界真的變小了 變平了,中國作為地球村的一員,正以驚人的速度發展變化著。世界正改變著中國,中國也不斷影響著世界。在備感欣喜振奮之餘,我亦常常思索,在乙個越來越小 越來越平的世界裡,中國會面對怎樣的挑戰和機...

《C 應用程式效能優化》之程式記憶體

乙個程式占用的記憶體區通常分5種,如下 全域性 靜態資料區 儲存全域性變數和靜態變數 常量資料區 儲存程式中的常量 字串等,不可修改 區 儲存 資料 棧 儲存自動變數 區域性變數,傳遞引數 堆 使用者控制的儲存區,儲存動態產生的資料 程式在分配記憶體時為了加快訪問速度,採取的一種分配策略。每個特定平...