1

我必须实现一个显示报告生成进度的进度条,问题是我必须根据生成的事件表示报告进度的百分比,但首先不知道事件的总量,例如报告生成发送以下事件(阶段):

 - Starting Report generation
 - Start Query execution
 - End Query execution
 - Start Report Rendering
 - End Report Rendering
 - End Report Generation

在这个例子中,总共有 3 个任务和 6 个事件,我不知道任务的总数,但我知道事件的总数是任务数的两倍。

我不知道存在哪些事件以及它们有多少,但我必须用进度条表示进度,所以用一个介于 0 和 100 之间的数字。

怎么计算?什么是代表进展的最佳方式?

4

2 回答 2

3

可能您能做的最好的事情就是完全放弃实际进度条的想法,而改用一些不确定的进度指示器。“选框”或“弹跳”进度条通常用于桌面系统上的这种情况。

另一种选择——如果你真的想展示一些类似进步的东西——是采用一些启发式方法,只是(部分地)伪造它。您在这里并没有太多信息,因此它必须非常聪明,并且需要对真实案例进行大量测试。这里有一些建议:

  • 根据当前处理任务的嵌套级别增加进度。基本上,这个想法是任务越细,它对整体进展的贡献就越小。Start当然,我所说的任务嵌套是指将您的和End消息括起来所隐含的层次结构。

  • 合理估计您可以预期的最大任务数量,并根据您距离完成的距离来调整进度的增加速度。例如,如果您预计不超过 500 个任务,并且您已经处理了 300 个但已经显示 80% 的进度,那么您必须认真放慢任何进一步的增加。同样,如果你落后了,你应该适当地扩大你的进步增量。

  • 避免大跳跃。即使您需要快速赶上,如前一点所述,请逐渐并随着时间的推移进行。举一个具体的例子:与其每次增加 10%,然后静止 10 秒,不如在 10 秒内增加 10 次,每次增加 1%。

您可能还可以尝试使用更多技术。总的来说,这是一个非常有趣的与用户体验和数学相关的问题,但您应该考虑在这上面花费认知努力是否值得。我希望在大多数情况下,不确定的进展绝对没问题。

于 2012-01-18T10:19:12.863 回答
1

正常进度条无法满足您的要求,因为您基本上不知道要追踪的进度。您可以做的是有一个选框进度条(一个无限期地继续运行的进度条)向用户显示您的应用程序仍在运行,并且高于或低于它,有一个不可编辑的文本框,用于显示您上面提到的任务.

于 2012-01-18T10:02:52.623 回答