时间计算不支持TimeSpan.FromTicks DateTime
本文关键字:FromTicks DateTime TimeSpan 不支持 计算 时间 | 更新日期: 2023-09-27 18:06:49
我正在尝试计算程序中的视频帧率。要做到这一点,我取
DateTime.Now
在流的开始,然后在每一帧之后再一次,同时增加一个帧计数器。
然后我计算FPS如下:
int fps = (int)(frames / (TimeSpan.FromTicks(CurrentTime.Ticks).Seconds - TimeSpan.FromTicks(StartTime.Ticks).Seconds));
问题是我偶尔会得到一个负数,这意味着开始时间必须晚于当前时间。这怎么可能呢?有人对这些函数有足够的了解吗?
Seconds给出TimeSpan的秒数部分,而不是以秒为单位转换的TimeSpan的总持续时间。这意味着秒永远不会大于60。
使用TotalSeconds代替
您应该考虑使用StopWatch来满足这些需求,它具有更好的精度
datetime函数可能不够精确,无法满足您的需求,您可能需要查看性能计数器。我想秒表课程就是你想要的。System.Diagnostics.StopWatch。即使用queryperformancfrequency和QueryPerformanceCounter函数来计时