c# - 无法使进度条在多线程上工作
问题描述
我遇到的问题与在不同线程之间使用进度条的跨线程调用有关。我有一个主函数,它生成一个带有进度条的表单,这个函数调用另一个函数,其中包含一个对递归函数的调用,并且 Task.WaitAll 具有所有异步。我想要实现的是每次“根”递归结束时的进度条步进。
我已经尝试过在两个调用中将 ProgressBar 作为参数传递,然后调用 PerformStep。问题是它看起来像是暂停了执行,如果我真的从执行中暂停了 VS,我注意到流程被卡在了那条线上。
private someArray; //this is not relevant
private void mainFunction(){
Form f=new Form();
ProgressBar p=new ProgressBar();
loopFunction(p);
}
private void loopFunction(ProgressBar p){
var tasks=someArray.Select(i => Task.Factory.StartNew(() => insideFunction(p)));
Task.WaitAll(tasks.Cast<Task>().ToArray());
}
private void insideFunction(ProgressBar p){
doSomething();
p.Invoke(new Action()=>p.PerformStep());
}
就像我说的那样,我得到的是在最后一行停止的流程,尽管我已经阅读了很多,这似乎是正确的做法。
任何人都可以找到错误?
非常感谢
解决方案
推荐阅读
- javascript - 如何使用Javascript或Jquery选择两个特定列表项之间的所有列表项(li)
- vim - 如何在vim中自动完成仅对该bash脚本本地的路径变量?
- r - 从 R 中的交互式直方图选择中提取和汇总数据
- cmake - 同名的 Python 库和 CMake 目标
- pdf - wkhtmltopdf 将 svg 文件导出为 pdf “紧” - 没有边距?
- python - 如何从这个正弦波中去除直线
- javascript - get a channel id discord.js
- python - 如何使用 .createDataFrame() 读取标题?
- javascript - 为什么我无法使用 JQuery 和 FileContentResult 打开 CSV 文件
- javascript - 在日期选择器中将假期变灰的简单方法?