在高層次上,我的應用程序根據類型將大約5個不同的DataTemplates應用於一組ListBoxItems。這些項目在特定的x,y點佈置在畫布上。我在ListBox上實現了虛擬化,似乎並沒有改善完成渲染線程進程所需的時間。用戶完全加載和使用UI仍需要大約8-12秒。我認爲虛擬化會幫助解決這個問題,但環顧四周後,它看起來只能幫助處理大量數據的滾動。我在這個假設中是否正確,並且其他人是否還有其他技巧來改進渲染線程。這是我遇到的唯一問題,然後我的項目完成。感謝StackOverflow!渲染虛擬化後線程仍然很慢
回答
是的,ListBox虛擬化用於滾動。當您在ListBox中有大量項目時,啓用虛擬化將僅顯示可見項目(用於滾動的一些額外項目),而滾動列表框將替換渲染項目中的數據而不是渲染新項目。
如果你要發佈一些代碼,也許我們可以做一些性能調整
我將在會議後發佈一些通用代碼。我根據嚴格的政策張貼代碼抱歉 – jes9582
虛擬化意味着你已經看到僅創建的項目,然後動態地銷燬/創建新的項目,如您滾動您提供幫助。另一種方法是一次爲所有項目創建所有UI控件。
這聽起來像你有其他應用程序的更大的問題。你是否在後臺線程上執行所有加載操作? UI控制樹確實非常複雜嗎?你正在顯示100個或1000個項目?
我們在WPF中的性能方面也遇到了很多麻煩。最好的方法當然是分析你的應用程序。我們使用ANTS性能分析器,但任何.NET分析器都可以。由於查找了我們的XAML資源,我們獲得了巨大的性能。這就是我可以給你的建議: 儘量減少XAML中的所有資源。但不僅如此,也儘量減少您擁有的XAML文件的數量。你可以嘗試的一件事是讓你加載DataTemplate的複雜部分。與在瀏覽器中加載JPEG時發生的情況相似,首先您會看到一個像素化圖像,它在完成加載JPEG後會更加精細。要做到這一點,首先使用一個更簡單的DataTemplate,然後如果這是可見的,只需按需或稍後加載複雜模板。 但是,如果沒有更多關於您的具體問題的信息,我們只能猜測。 This是我的一個老問題,關於一個類似的主題,也許這將有助於。
我有類似的經驗dowhilefor。 SP1似乎可以幫助並重啓 – Paparazzi
- 1. VirtualBox虛擬機在文件被刪除後仍然很大
- 2. ModelSim波浪渲染很慢
- 3. 虛擬化仍然與Docker相關嗎?
- 4. 查詢仍然很慢
- 5. application.html.erb仍然沒有渲染
- 6. 虛擬現實渲染管線中是否存在優化
- 7. 使渲染方法虛擬?
- 8. 編譯MVC視圖仍然第一請求緩慢渲染
- 9. 線程仍然需要很長時間
- 10. 很慢的渲染,Rails的啓動
- 11. ASP.NET MVC渲染看起來很慢
- 12. Rails 3渲染速度很慢
- 13. 渲染視圖時ASP.NET MVC 4很慢
- 14. 爲什麼我的requestAnimFrame仍然很慢?
- 15. Sqlite3:插入多行仍然很慢
- 16. 重定向然後渲染
- 17. 與不需要虛擬機的編譯程序一起使用時,CGI是否仍然很慢?
- 18. VBO渲染慢
- 19. 多線程很慢?
- 20. Java多線程渲染,如何優化
- 21. 添加索引後數據庫仍然很慢
- 22. 從虛擬機刪除,仍然被紗線訪問/ TEZ
- 23. 陣營虛擬化 - 改變一個列表行後的高度渲染
- 24. IntelliJ調試:掛起整個虛擬機,然後踩單線程
- 25. 用後臺工作線程渲染ListView
- 26. Silverlight - 後臺渲染控件線程
- 27. jsTree - 渲染優化|很長的渲染與2000個節點
- 28. 慢渲染使用「無襯線」
- 29. CSS虛線邊框渲染問題
- 30. ItemsControl的渲染慢慢
你能展示XAML嗎? – Bas
我不允許發佈任何代碼,對不起。我會看看我是否可以把它放在這裏。這是一組非常龐大的代碼,我知道這完全沒有幫助。 – jes9582
僅當從VS運行時纔會出現問題。如果你直接運行.exe,你是否仍然有問題?它可能有一些綁定錯誤,你沒有看到。嘗試設置presentationtrace = high並運行一次以查看是否有任何錯誤。 – Paparazzi