基于另一个类的计数器变量实时更新WPF进度栏

问题描述 投票:0回答:1

我创建了一个简单的WPF,可以通过OpenFileDialog选择一个文件夹,然后通过按按钮执行工具。该按钮从另一个类调用一个方法,该方法循环遍历文件夹中的所有文件并对其进行更改。

接下来,我尝试实现进度条,因为每当我按下“运行”按钮直到方法完成时,UI都会冻结。我使用Dispatcher类实现了这一点。

我的问题:我不知道如何更新进度条。我希望它显示如下进度:23/100转换的文件

我以为,添加一个在每次迭代后都与INotifyPropertyChanged匹配的增量计数器可以解决这个问题,但到目前为止我仍然一无所获。我要解决这个错误吗?有没有更简单的方法来实现这一目标?

我对WPF和C#还是很陌生,所以非常欢迎任何想法

到目前为止,我得到了:

Thread t = new Thread(new ThreadStart(PBbVisible));
            t.
Thread m = new Thread(new ThreadStart(RunTool));
            m.Start();
Thread n = new Thread(new ThreadStart(PBHidden));
            n.Start();

private void PBbVisible()
        {
            this.Dispatcher.Invoke(() => { pbStatus.Visibility = Visibility.Visible; });
        }
 private void RunTool()
        {
            var tool = new Converter();
            this.Dispatcher.Invoke(() => {

                    pbStatus.Maximum = tool.PbMax(folderContext.ToString());
                    tool.ChangeSvgs(folderContext.ToString());

                }
            });
        }

 private void PbHidden()
        {
            this.Dispatcher.Invoke(() =>
            {                
                pbStatus.Visibility = Visibility.Hidden;
            });
        }

c# wpf inotifypropertychanged dispatcher
1个回答
0
投票

提供的信息不是完整的。

  • FolderContext.ToString()在做什么?
  • 您在哪里取得进步?

总之,通常不需要线程来执行可见性任务。这些也可以在runtool中完成。

© www.soinside.com 2019 - 2024. All rights reserved.