我正在同时发生多个繁重的流程,我很困惑如何在单个进度条中显示每个流程的进度。正如我在像Torrent这样的软件中看到的,他们分割了多个进程的进度条。你能帮我创建那样的进度条吗?我手里还有telerik进度条。
任何帮助将不胜感激。
答案 0 :(得分:1)
根据我的理解,您已经为各个流程创建了许多进度条,您只需要将它们全部汇总为一个。
如果是这种情况,您可以将事件处理程序附加到每个进程的进度报告更改,并在通知该处理程序时将该属性设置为:
var count = allProcesses.Count;
var all = allProcesses.Sum(p => p.Progress);
//You could replace the following with max = count * 100 if that's the case
var max = allProcesses.Sum(p => p.Max);
overallProgressBar.Minimum = 0;
overallProgressBar.Maximum = max;
overallProgressBar.Value = all;
注意:假设0-100
是所有流程的进度范围。
答案 1 :(得分:0)
您可以为每个进程使用一个ProgressBar(这是最简单的)
要为所有流程使用单个ProgressBar,您需要先计算整个工作量,然后让每个流程向整个流程报告其进度。
实施例
2个进程:进程A正在读取2000条记录,进程B正在读取6000条记录。 计算总体进度:
progress = (2000/(2000 + 6000)) * (progressA / 2000) +
(6000/(2000 + 6000)) * (progressB / 6000);
一般来说:
totalProgress = sum for all progresses (totalEffortA/totalEffort) * (progressA / totalEffortA)