如何分割同时发生的多个进程的进度条

时间:2012-02-13 06:55:11

标签: wpf

我正在同时发生多个繁重的流程,我很困惑如何在单个进度条中显示每个流程的进度。正如我在像Torrent这样的软件中看到的,他们分割了多个进程的进度条。你能帮我创建那样的进度条吗?我手里还有telerik进度条。

任何帮助将不胜感激。

2 个答案:

答案 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)