Wpf 如何为同时发生的多个进程拆分进度条
我有多个繁重的进程同时发生,我很困惑,如何在一个进度条中显示每个进程的进度。正如我在Torrent这样的软件中看到的,它们将进度条拆分为多个进程。你能帮我创建这样的进度条吗?我手上还有telerik进度条Wpf 如何为同时发生的多个进程拆分进度条,wpf,Wpf,我有多个繁重的进程同时发生,我很困惑,如何在一个进度条中显示每个进程的进度。正如我在Torrent这样的软件中看到的,它们将进度条拆分为多个进程。你能帮我创建这样的进度条吗?我手上还有telerik进度条 任何帮助都将不胜感激。您可以为每个流程使用单个进度条(这是最简单的) 要对所有流程使用单个ProgressBar,您需要首先计算整个工作量,然后让每个流程将其进度报告给整个进度 范例 2个进程:进程A读取2000条记录,进程B读取6000条记录。 要计算总体进度,请执行以下操作: progre
任何帮助都将不胜感激。您可以为每个流程使用单个进度条(这是最简单的) 要对所有流程使用单个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)
根据我的理解,您已经为各个流程创建了许多进度条,您只需要创建一个进度条,将它们汇总为一个进度条 如果是这种情况,您可以将事件处理程序附加到每个流程的进度报告更改,并在通知该处理程序时,将该属性设置为:
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
。这样,您就可以假设所有作业所需的工作量相等。@Erno,一旦您有了各个进程的数据,就没有任何区别了。我更新了我的答案,这不是我的意思。你假设作业A中的100个进度等于作业B中的100个进度。@Erno,错了。在我更新的示例中,所谓的100是每个进程的单个值。