2012-12-15 102 views
0

以下代碼凍結了我的UI。DataGridView在加載大表時凍結UI

'Load DataTable using backgroundworker with 15,000 records 
... 

'On backgroundworker's run completed event, pass loaded table 
'and fill datagridview control 

dim t as DataTable 
t = DirectCast(e.Result, DataTable) 

'This part takes very long and FREEZE UI 
gridview.DataSource = t 

有沒有人有解決方案來解決加載部分? DataGridView中沒有異步加載方法,我無法在backgroundworker線程中放置gridView.DataSource = t,因爲它會與UI線程衝突。請幫助..

+0

看來你需要先學習[Threading](http://www.dotnetperls.com/backgroundworker-vbnet) – spajce

+0

爲什麼你想要一次顯示15,000條記錄?限制查詢x結果,並有prev /下一步按鈕重新加載 – Steve

+0

我認爲backgroundworker部分沒有錯。它工作完美。問題是將由backgroundworker提取的數據分配給datagridview控件。顯示數據需要花費很長時間。 –

回答

0

使用Datagridview虛擬模式解決了這個問題。