none
关于数据集读写与界面的问题 RRS feed

  • 问题

  • 当用WPF的DataGrid绑定数据集进行大量数据读写时除了鼠标还能动以外,桌面休克(程序界面就更甭提了)。动用线程也不好使,请教各位如何解决。

    另外,数据集读写时如何给进度条赋值呢?

    2012年9月19日 4:20

答案

  • 感谢答复!

    是数据集与数据库之间的读写,的确是数据量大引起的问题,问题已经解决.

    但是,如何把这个读写操作的消耗时间反映到进度条的进度上呢?而非IsIndeterminate

    2012年9月21日 9:29

全部回复

  • 不要使用UI线程,使用独立线程处理数据集读写操作。


    Wanpeng wanpeng.ones@gmail.com

    2012年9月19日 5:00
  • 感谢解答,UI 看来是铁定不好使了,如果用独立线程处理数据集,情况还是那样,除非用独立线程另弄个新进度条冒充一下,还有其他方法没? 还有赋值问题?
    2012年9月19日 11:08
  • 你好,

    我们通常要在非UI线程上,操作进度条这种TimeConsume的控件以减少UI卡滞的现象。我们可以使用 BackGroundWoker 或是 Dispatcher 来给进度条赋值。

    另外如果这种UI block的现象是由于数据更新过多过快导致,我想一个思路是放弃自动更新ItemsSource,转而使用手动更新,就是当所有的数据都注入到ItemsSource 后,手动的通知数据更新将大量减少数据更新对UI造成的影响。使用 BindingExpression.UpdateTarget 方法来实现。

    希望对你有所帮助


    Annabella Luo[MSFT]
    MSDN Community Support | Feedback to us

    2012年9月21日 7:34
    版主
  • 感谢答复!

    是数据集与数据库之间的读写,的确是数据量大引起的问题,问题已经解决.

    但是,如何把这个读写操作的消耗时间反映到进度条的进度上呢?而非IsIndeterminate

    2012年9月21日 9:29
  • 我觉得这种非量化的无法预期准确时间的操作,你没办法在进度条上显示现在进行到了多少百分比了,作为替代,就将进度条表示成一个一直在重复读取的style,做一个animation,这样应该比较合理。


    Annabella Luo[MSFT]
    MSDN Community Support | Feedback to us

    2012年9月21日 10:06
    版主
  • 呵呵,集思广益,追求完美

    2012年9月21日 15:17