翻譯|行業(yè)資訊|編輯:龔雪|2023-02-15 10:42:44.363|閱讀 146 次
概述:在本文中,將為大家記錄9個提升WPF應(yīng)用程序冷啟動性能的策略。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在上文中(點擊這里回顧>>),我們主要介紹了針對三個技術(shù)的WPF應(yīng)用程序性能提升,本文將著重介紹針對DevExpress WPF界面控件研發(fā)的應(yīng)用程序如何提升性能!
PS:有用控件推薦~DevExpress WPF擁有120+個控件和庫,將幫助您交付滿足甚至超出企業(yè)需求的高性能業(yè)務(wù)應(yīng)用程序。通過DevExpress WPF能創(chuàng)建有著強大互動功能的XAML基礎(chǔ)應(yīng)用程序,這些應(yīng)用程序?qū)W⒂诋?dāng)代客戶的需求和構(gòu)建未來新一代支持觸摸的解決方案。
DevExpress技術(shù)交流群7:674691612 歡迎一起進群討論
如果您的應(yīng)用程序包含帶有多個項的DevExpress Ribbon控件,按需加載頁面可以幫助應(yīng)用減少啟動時間。
要啟用延遲RibbonPage項加載,請將RibbonPage的RibbonPageGroups移動到GroupCollectionTemplate。
<dxr:RibbonControl RibbonStyle="Office2019"> <dxr:RibbonDefaultPageCategory> <dxr:RibbonPage Caption="File"> <!-- ... --> </dxr:RibbonPage> <dxr:RibbonPage Caption="Home"> <dxr:RibbonPage.GroupCollectionTemplate> <DataTemplate> <ItemsControl> <dxr:RibbonPageGroup Caption="File"> <dxb:BarButtonItem ... /> <dxb:BarButtonItem ... /> </dxr:RibbonPageGroup> </ItemsControl> </DataTemplate> </dxr:RibbonPage.GroupCollectionTemplate> </dxr:RibbonPage> </dxr:RibbonDefaultPageCategory> </dxr:RibbonControl>
由于WPF在主線程中使用UI,整個窗口將保持凍結(jié)狀態(tài),直到所有元素都被加載,DevExpress LoadingDecorator允許開發(fā)者異步加載獨立的UI部分:
通過執(zhí)行這個策略,您的應(yīng)用程序可以在屏幕上加載“較重”的元素之前顯示“較輕”的UI元素。在上面的動畫中,我們將視圖的右側(cè)部分封裝在LoadingDecorator中,以首先顯示輕量級導(dǎo)航菜單,只有當(dāng)它完全加載時才會顯示正確的部分:
<Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <dxa:AccordionControl> <!--...--> </dxa:AccordionControl> <dx:LoadingDecorator Grid.Column="1"> <dxdo:DockLayoutManager> <!--...--> </dxdo:DockLayoutManager> </dx:LoadingDecorator> </Grid>
如果應(yīng)用程序使用選項卡接口,則可以使用不同的選項卡緩存模式對性能進行微調(diào)。此功能可在WPF Tab控件(DXTabControl)和WPF (當(dāng)使用選項卡文檔組或時)中使用。
默認(rèn)情況下,選項卡不緩存,這對于初始啟動很好。但是如果您決定第二次打開同一選項卡,其內(nèi)容將再次加載。若要使用先前加載的元素,請在選擇后緩存選項卡。此操作由TabContentCacheMode屬性控制(對于DXTabControl, LayoutGroup和DocumentGroup),將TabContentCacheMode設(shè)置為cachetabsonselection來啟用此策略。
如果選項卡切換比啟動性能更重要,您可以將TabContentCacheMode設(shè)置為CacheAllTabs。在這個實例中,所有選項卡都將與第一個選項卡一起加載和緩存,這可能會顯著增加視圖加載時間,但其他選項卡將切換得更快,即使是第一次打開它們。
雖然應(yīng)用程序可能處理大量數(shù)據(jù),但用戶可能不需要一次性查看所有數(shù)據(jù)。許多WPF控件允許您按需加載數(shù)據(jù),以下DevExpress WPF組件支持虛擬化/按需數(shù)據(jù)加載:
GridControl
ComboBoxEdit, LookUpEdit, ListBoxEdit
TreeListControl
PivotGridControl
SchedulerControl
DevExpress組件包含主題使用的許多XAML資源,當(dāng)一個組件第一次顯示時,WPF解析所有這些資源。您可能已經(jīng)注意到,第二次顯示相同的控件所花費的時間要少得多,即使該控件之前在不同的視圖中顯示。
DevExpress主題允許您在組件顯示在屏幕上之前部分加載主題資源,雖然這不會加快主視圖的速度,但所有子視圖都會更快地打開,您可以使用下面的代碼來實現(xiàn)這個策略:
using DevExpress.Xpf.Core; public partial class App : Application { protected async override void OnStartup(StartupEventArgs e) { base.OnStartup(e); await ThemeManager.PreloadThemeResourceAsync("Office2019Colorful"); } }
如果您的應(yīng)用程序使用啟動畫面,您可以在其中預(yù)加載主題資源。
View/ViewModel初始化中的某些操作可能會產(chǎn)生不必要的啟動延遲,如果您與遠(yuǎn)程服務(wù)同步通信、處理大文件或在View/ViewModel構(gòu)造函數(shù)中執(zhí)行其他資源密集型操作,則可能發(fā)生這些延遲。
Visual Studio包含一個內(nèi)置的性能分析器,以幫助確定與性能相關(guān)的問題的確切原因。要發(fā)現(xiàn)耗時的操作,請遵循以下步驟:
(1)在Visual Studio中跳轉(zhuǎn)到Debug -> Performance Profiler。
(2)選擇CPU Usage復(fù)選框然后單擊Start。
(3)當(dāng)應(yīng)用程序加載時,單擊Stop Collection來在分析選項卡中查看CPU使用數(shù)據(jù),分析器將自動突出顯示有問題的方法。
您可以單擊各個方法導(dǎo)航到詳細(xì)的調(diào)用樹。
正如您可以從上面的圖像(取自測試應(yīng)用程序)中看到的,ProcessData方法(由ViewModel構(gòu)造函數(shù)調(diào)用)消耗了大量的資源,解決此問題的一種方法是異步處理操作。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自:慧都網(wǎng)