我正在尝试估算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;
}
}