我创建了一个简单的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;
});
}
提供的信息不是完整的。
总之,通常不需要线程来执行可见性任务。这些也可以在runtool中完成。