我需要在 Windows 窗体应用程序中使用进度条,但我的进程不是特定长度的,因此我无法为进度条设置最大值。
我必须使用 LongProcess 类 Run 方法耗时来增加进度条值。
void start_click()
{
button1.Enabled=false;
Task.Factory.StartNew(()=>{
Parallel.Foreach(files,f=>{
LongProcess process =new LongProcess(); // Long-running process (is not my control)
process.Run(f);
//progressBarValueIncrement();
});
}).ContinueWith(t=>{
// completed
BeginInvoke(new Action(() => button1.Enabled=true));
});
}
我该如何实现这个?
最佳答案
您可以使用剩余未填充值的一定百分比来增加进度条。这意味着进度条永远不会填满,并且会越来越慢地填满。
因此,在第一个增量中,您填充进度条 50%,然后下一个增量您填充剩余部分的 50%,因此 25%,总计 75%,然后剩余 25% 的 50%,总计 87.5% 等等.
您可能想要对其进行分段,以便您使用的 %age 基于进度条的满度,因此从 5% 开始,这样它就不会在开始时填得太快,然后移动到更高的百分比,因此您可以看到条形仍在接近结束时移动...
如果您不知道某件事需要多长时间,进度条是否合适?也许你会更好地做一些表明正在发生进展的事情,但不是已经完成了多少......
关于c# - 如何在非长度特定任务或并行循环中使用进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9228233/