C#高精度定时

时间:2011-07-03 13:36:59

标签: c#

我正在C#中进行小型打字测试,程序会要求您输入一个单词,然后显示您的时间。 我正在使用c#计时器类(从工具箱中拖放一个计时器),Tick时间为1ms,但它没有给我准确的结果,所以我用它代替了StopWatch,所以现在时机非常准确,但问题是你似乎无法将事件处理程序分配给一个StopWatch,所以尽管我可以向用户显示他完成单词时的时间,但我实际上无法显示他正在键入的时间。 想法?

3 个答案:

答案 0 :(得分:4)

使用秒表准确测量时间;并使用Timer定期触发UI更新,显示StopWatch测量的时间。对于UI,您不需要1毫秒的分辨率(屏幕更新时间可能大于1毫秒,并且,无论如何,人眼将无法快速感知到更新)。

尝试每40到100毫秒更新一次,我认为这样就足够了。

答案 1 :(得分:3)

使用另一个每十分钟左右触发一次事件的计时器并轮询秒表值。它不会像秒表那样准确,因为会有一个滞后,但人类无法对任何事情做出真正的反应,而不是十分之一秒。

答案 2 :(得分:2)

使用System.Timers.Stopwatch课程,检查字段IsHighResolutionSystem.Timers.Stopwatch.IsHighResolution == true),检查是否有高分辨率。

然后,每当你需要触发某些东西时,可以通过另一个定时器以最小间隔触发它,它会检查你Stopwatch的值。虽然这不是完美的(你甚至不需要接近完美),但它会起作用。