线程在c#(wpf)中运行时刷新进度条

时间:2015-05-04 08:12:27

标签: c# wpf delegates invoke

我的wpf应用程序带有按钮。

按钮启动过程的点击事件大约需要30-50秒。 我希望在此线程正常工作时使用进度条。 出于这个我尝试也dispatcher.invoke。没有成功。

这是我的代码:

MainWindow.xaml.cs:

 public MainWindow()
    {
      some code.....
      Engine.ProgressEvent += (percent) => Dispatcher.Invoke(new Action(() => progressBarIndicator.Value = percent));
      some code...

    }
    private void btnFirmwareUpdate_Click(object sender, RoutedEventArgs e)
    {
      some code...
      send data to hardware using functions in Engine class
      Engine e = new Engine();
      e.update();
    }

我的Engine.cs:

Class Engine 
{
    public static event Action<double> ProgressEvent;

    public update()
    {

      ProgressEvent(10);
    }
}

进度条确实获得更新正确值的进度条,但gui不刷新。 任何解决方案?

1 个答案:

答案 0 :(得分:2)

我建议您使用BackgroundWorker来更新Main UI

以下是如何使用progress bar

实施BackgroundWorker的示例

Progress bar