我有多个繁重的进程同时发生,我很困惑如何在单个进度条中显示每个进程的进度。正如我在像Torrent这样的软件中看到的,他们将多进程的进度条分开。你能帮我创建这样的进度条吗?我的手里还有telerik进度条。如何拆分多进程同时发生的进度条
任何帮助,将不胜感激。
我有多个繁重的进程同时发生,我很困惑如何在单个进度条中显示每个进程的进度。正如我在像Torrent这样的软件中看到的,他们将多进程的进度条分开。你能帮我创建这样的进度条吗?我的手里还有telerik进度条。如何拆分多进程同时发生的进度条
任何帮助,将不胜感激。
你可以使用一个单一的进度为每个进程(即最容易)
要使用一个进度条的所有进程,你需要先计算整个工作,然后让每个进程报告其进展到整个进展。
例
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)
根据我的理解,你已经创建了一颗颗进度条的各个过程,你只是想有一个总结他们全部合而为一。
如果这是你可以有附加的事件处理程序的每个进程的进展报告变更的情况下,和处理通知时,设置属性为:
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
是所有进程的进度范围。
这样你就可以假设所有的工作都是平等的。 – 2012-02-13 07:24:12
@Erno,一旦你获得了单个进程的数据,它就没有什么区别。我已经更新了我的答案。 – Shimmy 2012-02-13 07:30:13
这不是我的意思。你假设工作A的100个进度等于工作B的100个进度。 – 2012-02-13 08:05:22