C#高精度计时

本文关键字:高精度 | 更新日期: 2023-09-27 18:00:54

我正在用C#做一个小的打字测试,程序要求你键入一个单词,然后显示你的时间。我使用的是c#timer类(从工具箱中拖放一个计时器(,Tick时间为1ms,但它不能给我准确的结果,所以我用它代替了StopWatch,所以现在计时非常准确,但问题是你似乎无法将事件处理程序分配给StopWatch。因此,尽管我可以在用户完成单词时向他显示时间,我真的看不出哼哼打字的时间。想法?

C#高精度计时

使用秒表精确测量时间;并使用计时器定期触发UI更新,显示StopWatch测量的时间。对于UI,你不需要1毫秒的分辨率(屏幕更新时间可能大于1毫秒,而且,人眼无论如何都无法感知到那么快的更新(。

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

使用另一个每隔十分之一秒左右触发事件并轮询Stopwatch值的计时器。它不会像秒表那样准确,因为会有滞后,但人类对任何事情的反应都不会超过十分之一秒。

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

然后,每当你需要发射东西时,以尽可能低的间隔通过另一个计时器发射,它会检查你的Stopwatch的值。虽然这并不完美(你甚至不需要接近完美(,但它会起作用的。