【问题标题】:Recalculate the progress percentage according to potential errors根据潜在错误重新计算进度百分比
【发布时间】:2016-11-29 09:45:04
【问题描述】:

我有一个根据三个操作前进的进度。 第一个操作需要 10 秒,第二个操作需要 15 秒,第三个操作需要 15 秒。 可以使用以下公式计算进度百分比:

elapsedTime/totalTime * 100%

其中 totalTime 为 10+15+15 = 40 秒。

现在假设每个操作可能有一个在每个操作结束时计算的错误(例如第一个操作需要 3 秒以上,因此完成它的时间是 13 秒)。 什么是重新计算进度百分比的新方法,以便进度 总是往前走(应该慢慢往前走,但永远不要后退)?

我的最大进度设置为 100。

【问题讨论】:

  • 我什至不会尝试估计每个进程的时间。也许一台速度较慢的计算机会执行此工具,这将需要更多时间。这不准确!我宁愿将百分比除以进程数。当然不是每个百分比都一样。
  • 另外:您可以将后备进程添加到进程总数中。这样,进度只会变慢,但永远不会倒退。

标签: c# wpf visual-studio progress-bar


【解决方案1】:

如果两边都加上error_Time会怎样?我的意思是这样的:

(op1+ error_Time_op1 + op2 +op3 )/(totalTime + error_Time_op1 ) * 100%

【讨论】:

    【解决方案2】:

    totalTime 增加错误添加到整体进度的数量

    totalTime + error_time
    

    为了使进度始终向前,您应该将显示冻结在错误发生时的值处,并且仅在 new_calculated 百分比超过记住的值时继续更新。

    图像您在操作 2 结束时:

    totalTime  = 40;
    elapsedTime = 25;
    
    old_progress = 25 / 40 * 100 [62.5%]
    

    然后出现错误:

    errorTime = 3;
    totalTime  = 40 + errorTime  ;
    elapsedTime = 25;
    
    new_progress = 25 / 43 * 100 [58.1%]
    

    现在您等待new_progress 值超过old_progess 值,然后您可以再次更新。这样就永远不会倒退了

    【讨论】:

    • 这会降低百分比。 @MartinaLabMath 是否想要这个仍然是个问题。
    • @C4u 我花了一段时间才写完这篇文章的其余部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 2010-11-22
    • 2016-06-15
    • 2016-09-04
    相关资源
    最近更新 更多