2011-03-14 22 views
0

我在創建處理適量快速刷新數據並將其顯示在數據網格中的應用程序時遇到問題。目前我們使用的是Telerik radgridview winforms控件,刷新性能非常不錯 - 直到其中一列被排序,這使得事情變得前所未有,應用程序幾乎無法使用。我不需要顯示大量的數據,比如200條以下的數據 - 但是它們會每半秒鐘更新一次。數據是隻讀的,但我們更願意使用數據網格,因爲它使用戶可以輕鬆選擇顯示哪些列以及哪些列用於排序。需要構建快速排序的數據網格應用程序(桌面客戶端)

性能分析顯示,開啓排序會創建一個荒謬的單元重繪次數 - 對數百次屬性更改的數量級別爲數百萬次。大部分的CPU似乎都被各種GDI繪圖方法捆綁在一起,我假定它們處理繪畫單元格。

在這一點上,幾乎所有東西都擺在桌面上,從託管WPF網格以利用硬件加速,購買另一個網格。如果任何人有創建像這樣的應用程序的經驗或建議,這將是非常棒的。

回答

0

沒有具體的經驗,但一般問題:你能限制多久重繪一次屏幕?這聽起來像是在每次改變屬性時都要重新繪製所有內容。

如果無法控制排序和重繪的頻率,另一個編碼更改可能是保持數據的一個副本爲最新,然後單獨擁有Telerik程序看到的副本。然後以固定的時間間隔(如每秒)更新Telerik副本。這完全不知道這個程序是如何工作的,但是這是否可行?

+0

是的,我們可以控制這些東西發生的頻率 - 現在它設置爲每秒兩次左右。但不幸的是,隨着行數的變化,通常會導致繪圖。 – Egor 2011-03-14 05:15:40

+0

可以將數據與程序「看到」的數據分開保存,並在重畫之間複製它,這對此有幫助嗎?或者這是不可能的/有用的? – usul 2011-03-14 12:56:37

+0

這就是我最終處理它的方式 - 使用Telerik的虛擬模式。 – Egor 2011-04-20 01:26:08

相關問題