2011-07-03 50 views
1

我正在C#中进行小型打字测试,其中程序要求您输入一个单词,然后显示您的时间。 我正在使用c#timer类(从工具箱中拖拽一个定时器),它的Tick时间为1ms,但它没有给我准确的结果,所以我用StopWatch代替它,所以现在的时间是超级的准确,但问题在于,您似乎无法将事件处理程序分配给StopWatch,因此尽管我可以向用户显示完成该单词的时间,但我无法在打字时显示嗡嗡声。 想法?C#高精度时序

回答

3

使用另一个计时器,每隔10秒左右触发事件并轮询秒表值。它不会像秒表一样准确,因为它会有滞后,但人类不会比十秒钟更快地做出反应。

+0

完美工作。 – 7VoltCrayon

4

使用秒表精确测量时间;并使用定时器定期触发UI更新,并显示StopWatch测量的时间。对于用户界面,您不需要1毫秒的分辨率(屏幕更新时间可能会大于1毫秒,并且人眼无法感知更快的更新)。

尝试更新每个40 - 100毫秒,我认为这将是足够的。

2

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

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

+0

你不需要与真正的明确比较,因为该属性已经是一个布尔值... – Joey

+0

谢谢,对我来说工作得够好 – 7VoltCrayon