我认为你的主要进度条恰好填满一次是很重要的,并且总是有进度的迹象。
我最近在工作中做了一些非常相似的事情。任务很长,有很多子任务。我最终得到的界面是一个双进度条,实际上是一堆进度条中的第一个和最后一个。
API类似于
StartNewTask(Caption,NumberOfSubtasks)
EndTask
SetProgress(Caption,NumberOfSubtasksFinished)
StartNewTask
在堆栈上压入一个新柱,并EndTask
弹出一个。
SetProgress 设置最近推送的进度条的进度,并将更改波及父进度条。例如:
StartNewTask('Doing 2 things',2)
SetProgress('Done 1 now',1)
StartNewTask('Big Subtask',40)
...
SetProgress('Done some subtasks',10)
现在,显示了 2 个进度条,第二个显示为 25% (10/40),第一个显示为 62.5% (1/2 + 10/40*2)
就像我上面说的,如果你在堆栈中有 >2 个任务,我只显示第一个和最后一个(第一个给出整体进度并且永远不会倒退,第二个给出当前活动的指示)
您可以通过为每个子任务赋予权重来扩展它,即
StartNewTask(Caption,[ListOfSubTaskWeightings])
使顶部进度条更平滑。
此外,开发人员可以显示所有进度条以查看为什么需要很长时间,我认为您可以从中制作出不错的日志。