到目前为止,我用来DateTime.Now
获取时间戳,但是我注意到如果你DateTime.Now
在一个循环中打印,你会看到它以大约的离散跳跃增量.15毫秒 但对于我的应用程序中的某些情况,我需要获得最准确的时间戳,最好是精确到tick(= 100 ns).有任何想法吗?
更新:
显然,StopWatch
/ QueryPerformanceCounter
是要走的路,但它只能用于测量时间,因此我考虑DateTime.Now
在应用程序启动时调用,然后StopWatch
运行,然后只将经过的时间从StopWatch
返回的初始值中添加DateTime.Now
.至少那应该给我准确的相对时间戳,对吧?你怎么看待(黑客)?
注意:
StopWatch.ElapsedTicks
不同于StopWatch.Elapsed.Ticks
!我使用前者假设1 tick = 100 ns,但在这种情况下1 tick = 1/StopWatch.Frequency
.所以要获得相当于DateTime使用的刻度StopWatch.Elapsed.Ticks
.我刚刚学到了这个困难的方法.
笔记2:
使用StopWatch方法,我注意到它与实时不同步.大约10个小时后,它提前5秒.所以我想我们必须每隔X左右重新同步一次,其中X可能是1小时30分钟,15分钟等等.我不确定重新同步的最佳时间跨度是什么,因为每次重新同步都会改变偏移量,这可能是最多20毫秒.