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

C# C-时间计算不适用于TimeSpan.FromTicks DateTime,c#,datetime,timespan,C#,Datetime,Timespan,我试图在程序中计算视频帧率。要做到这一点,我需要 DateTime.Now 在流的开头,然后在每帧之后,同时增加帧计数器 然后我计算FPS,如下所示: int fps = (int)(frames / (TimeSpan.FromTicks(CurrentTime.Ticks).Seconds - TimeSpan.FromTicks(StartTime.Ticks).Seconds)); 问题是我偶尔会得到一个负数,这意味着开始时间必须晚于当前时间。这怎么可能呢?有人知道这些函数的详细信息

我试图在程序中计算视频帧率。要做到这一点,我需要

DateTime.Now
在流的开头,然后在每帧之后,同时增加帧计数器

然后我计算FPS,如下所示:

int fps = (int)(frames / (TimeSpan.FromTicks(CurrentTime.Ticks).Seconds - TimeSpan.FromTicks(StartTime.Ticks).Seconds));

问题是我偶尔会得到一个负数,这意味着开始时间必须晚于当前时间。这怎么可能呢?有人知道这些函数的详细信息吗?

datetime函数可能不够精确,无法满足您的需要,您可能需要查看性能计数器。我想秒表课正是你想要的。系统。诊断。秒表。这是使用QueryPerformanceFrequency和QueryPerformanceCounter函数进行计时。

秒为时间跨度的秒数部分,而不是以秒为单位转换的时间跨度的总持续时间。这意味着秒永远不会大于60


使用ToeStimes替代

< P>你应该考虑使用这样的需求,它有更好的精度

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