如何提高WPF中更新Progressbar的性能?

时间:2016-02-11 16:01:13

标签: wpf

我有一个需要向用户提供反馈的WPF应用程序。我使用WPF窗口(进度窗口),其中包含几个我尝试使用的更新进度条:

  1. 在进度窗口上调用方法并更改程序栏的值
  2. 将进度条的值绑定到ModelView
  3. 两者都表现相同。 [演示申请书下载] [1]

    如果我每次循环更新进度值,性能会非常慢。根据我更新进度值的频率,它会变得更好。

    演示应用程序给了我以下时间:

      Interval     Overall Loop Time
      1              23:46 seconds
      10              3:09 seconds
      100              :42 seconds
      1000             :05 seconds
    

    我想通过处理循环每次报告进度。怎么办?

    在我的真实"应用程序处理循环执行大量处理,但更新每个工作单元的进度条很慢。

1 个答案:

答案 0 :(得分:1)

设计需要进行处理的行为良好的应用程序的一般方法是,应该在另一个线程上完成工作,并将周期性消息发布回UI以在进度上更新它。 BackgroundWorker可能适合您的应用程序 - https://msdn.microsoft.com/en-us/library/cc221403%28v=vs.95%29.aspx?f=255&MSPPError=-2147217396