Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 预测过程结束时间_C#_Datetime - Fatal编程技术网

C# 预测过程结束时间

C# 预测过程结束时间,c#,datetime,C#,Datetime,我有一个简单的问题,我遇到了比我应该遇到的更多的麻烦 这很简单:我有一个流程开始的时间和当前时间。我还有需要处理的记录总数\u记录,以及当前记录编号\u当前 我怎样才能得到一个简单的结束时间线性预测?我最终陷入了一个有差异的滴答声之类的兔子洞,但我想我可以用一些简单的DateTime或TimeSpan技巧 TimeSpan delta = DateTime.Now - _startTime; float progress = (float)_records / (float)_current;

我有一个简单的问题,我遇到了比我应该遇到的更多的麻烦

这很简单:我有一个流程开始的时间和当前时间。我还有需要处理的记录总数
\u记录
,以及当前记录编号
\u当前

我怎样才能得到一个简单的结束时间线性预测?我最终陷入了一个有差异的滴答声之类的兔子洞,但我想我可以用一些简单的DateTime或TimeSpan技巧

TimeSpan delta = DateTime.Now - _startTime;
float progress = (float)_records / (float)_current;

嗯,听起来确实比实际情况简单得多

TimeSpan timeTakenSoFar = DateTime.Now - _startTime;
double percentageDoneSoFar = (double)_current / (double)_records;
TimeSpan timeTakingInTotal = timeTakenSoFar / percentageDoneSoFar;
DateTime finishTime = _startTime.Add(timeTakingInTotal);
这应该行得通

更新:

根据MSDN,您不能划分时间跨度,但在这种情况下,您可以使用记号:(我手头没有C#编译器来检查它是否100%语法正确)


每隔几个周期抽取一个样本,并确定从开始时间开始需要多长时间

now.subtract(_startTtime)
除以_当前指针,得到每个周期的时间

使用(
(\u记录-\u当前值)

也许这就是你所需要的?

也许只是澄清你的答案,
percentageDoneSoFar=\u records/\u current;
并不是真正的百分比…800/400=2,不是50%噢-对不起,错了-更新了,谢谢注意,这就是为什么描述性变量名如此重要:)而且你可能必须将其中一个变量转换为
双变量。另外,
timetakingtall
可能应该重命名为
timeRemaining
或其他名称。这很完美(有了更新),谢谢!我知道我只是在胡思乱想——这就是首席执行官在等待结果时修改代码的问题:)
now.subtract(_startTtime)
var restRecords = _records - _current;
var averageTimeForRecord = delta.TotalMilliseconds / _current;
var restTime = restRecords * averageTimeForRecord;
var finishDate = DateTime.Now.AddMilliseconds(restTime);