相关疑难解决方法(0)

可以在生产代码中使用秒表吗?

我需要一个准确的计时器,而DateTime.Now似乎不够准确.从我读到的描述中,System.Diagnostics.Stopwatch似乎正是我想要的.

但我有恐惧症.我对在实际生产代码中使用System.Diagnostics中的任何内容感到紧张.(我广泛使用Asserts和PrintLns等进行调试,但从未用于生产.)我不仅仅是尝试使用计时器来测试我的功能 - 我的应用程序需要一个实际的计时器.我在另一个论坛上看到System.Diagnostics.StopWatch仅用于基准测试,不应该在零售代码中使用,尽管没有给出理由.这是正确的,还是我(以及任何发布该建议的人)对System.Diagnostics过于封闭?即,在生产代码中使用System.Diagnostics.Stopwatch是否可以?谢谢阿德里安

c# system.diagnostics timer stopwatch

74
推荐指数
4
解决办法
2万
查看次数

如何在.NET/C#中获取tick精度的时间戳?

到目前为止,我用来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毫秒.

.net c# timestamp

61
推荐指数
5
解决办法
5万
查看次数

标签 统计

c# ×2

.net ×1

stopwatch ×1

system.diagnostics ×1

timer ×1

timestamp ×1