我正在尝试估计 MSI 安装还剩多少秒。虽然我知道这不准确,但我的计算似乎比应有的要差 - 我该如何改进?一个问题是,我经常发现进度从 ~0% 飞速增长到 ~95%,在很长一段时间内评估为还剩 0 秒。
我从 MSI 获得进度事件,每次更新进度时,我都会执行以下操作:
private int CalculateSecondsLeft(DateTime start, int overallProgress)
{
lock (this)
{
if (overallProgress == 0)
{
return 0;
}
var timeSpent = DateTime.Now - start;
double cal1 = timeSpent.TotalSeconds / overallProgress;
double cal2 = cal1 * (100 - overallProgress);
return (int)cal2;
}
}