簡體   English   中英

如何加速一個ListView的處理

[英]How to speed up the disposal of a ListView

如何加快 ListView 控件的處理?

一點背景:這個解決方案使用的是 MaterialSkin,所以我的可用控件列表是有限的(例如,沒有 ListBox 或 DataGridView)。 其次,該列表包含大量不合理的項目(平均為 51k,一列或兩列,具體取決於設置),所以我不期望閃電般的速度,但也不是我所看到的。

當表單關閉時,我不需要列表中的任何內容。 它達到了目的,可以離開了。 這是我嘗試過的:

Close();                    --- 16 seconds (just closing the form)

MyListView.Dispose();       --- 16 seconds

MyListView.Items.Clear();   --- 16 seconds

MyListView.Clear();         --- 17 seconds

MyListView.BeginUpdate();
MyListView.Items.Clear();   --- 16 seconds

實際上,我嘗試過的每個選項都需要大約 16 秒才能擺脫列表。 現在,填充列表大約需要 16 秒,我也在研究這一點——但至少在那里時間有點合理,因為我用太多記錄使這個糟糕的列表過載。 在那里,我知道 ListView 必須處理放置項目的開銷。 在移除方面,沒有那么多。

注意:表單正在與 ShowDialog 一起顯示——因此在 16 秒結束之前不會返回控件。 后備計划是使用 Show 並在對話框關閉過程中觸發事件。

是的,我認為顯示 51k 記錄是糟糕的 UI,並且已經多次向客戶端解釋了這一點; 現在,堅持 51k 記錄存在。 (我確實添加了全文搜索,否則...)

隱藏你的列表視圖怎么樣? 嘗試將它的可見屬性設置為 false,當您不再需要列表視圖時嘗試關閉表單而不清除您的列表視圖

您是否嘗試過使用數據綁定而不是直接使用 Listview.Items? 因此,您可以將 ItemsSource 設置為 null,然后(異步?)清空實際列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM