C# - 时间计算不适用于TimeSpan.FromTicks DateTime

Luk*_*uke 0 c# datetime timespan

我正在尝试计算程序中的视频帧速率.要做到这一点,我采取

DateTime.Now
Run Code Online (Sandbox Code Playgroud)

在流的开头,然后在每一帧之后再次增加一个帧计数器.

然后我像这样计算FPS:

int fps = (int)(frames / (TimeSpan.FromTicks(CurrentTime.Ticks).Seconds - TimeSpan.FromTicks(StartTime.Ticks).Seconds));
Run Code Online (Sandbox Code Playgroud)

问题是我偶尔会得到一个负数,这意味着开始时间必须晚于当前时间.情况怎么样?有没有人知道这些功能需要解释?

Fra*_*lli 6

秒为您提供TimeSpan的秒部分,而不是以秒为单位转换的TimeSpan的总持续时间.这意味着秒数永远不会超过60.

请改用TotalSeconds

  • +1,你是对的,但即使这样,当前时间仍然会倒退,因为管理员改变了时间,或者系统与时间服务器同步.最好使用StopWatch类,如果可用,它还将使用高分辨率性能计数器. (5认同)

ill*_*ant 5

您应该考虑使用StopWatch来满足这些需求,它具有更好的精度