iceman:您好!
之前对该问题理解不深刻,通过与您交流后,发现或许我之前的表述有问题,我重新描述一下问题:
我有一个窗口,显示数据表内容,大概有100多条记录,先从数据库获取数据到DataTable,在把DataTable内容赋值给C1DataGrid。
1)C1DataList.ItemsSource = DBTableObj.DefaultView语句执行的时间不长,通过Stopwatch发现只有20多个毫秒;
2)执行完上述语句到DataGrid控件显示记录时间较长,该时间与DataGrid控件的大小有关,如果DataGrid控件1024*768,从ItemsSource赋值到控件更新完成需要3秒,如果DataGrid控件大小为500*300,从ItemsSource赋值到控件更新完成需要1秒,上述时间与DataTable的记录数和列数关系不是很大。
本人对该问题的想法和尝试:
从C1DataList.ItemsSource = DBTableObj.DefaultView语句执行后到C1DataGrid控件界面更新,在这段时间里,窗口是假死的。
1)这种假死是否可以通过异步或多线程方式来改善(我试了BackgroundWorker、System.Threading.Timer都没有很好的效果);
2)我本想在C1DataGrid更新期间,执行一段加载动画,以提高UI用户交互效果,但实际在C1DataGrid更新期间,动画也是停止的。
需要达到的效果:
请iceman专家看看,像我这种情况是否有好的解决办法,以提高C1DataGrid控件数据更新期间,用户体验效果。 |