我正在为游戏做一个简单的高分加载项。为此,我需要一个精确的计时器,我可以从中显示标签中的已用时间。到目前为止,我尝试了以下内容:
Windows.Forms.Timer:不保持高分辨率间隔,有些更慢,有些更快。
System.Diagnostics.Stopwatch:无刻度事件。
我还想过实现一个低分辨率的Forms.Timer。然后,当计时器启动和停止时,我将存储系统时间,然后减去它们以获得经过的时间。但我不想让事情过于复杂。有什么想法吗?
答案 0 :(得分:3)
从某个时刻开始使用经过的时间。比任何一个:
答案 1 :(得分:3)
我认为使用Stopwatch
(高分辨率)和低分辨率Windows.Forms.Timer
的组合并不会过于复杂。
Stopwatch
非常简单易用,因此使用Timer
的复杂性也非常小。
(假设您可以使用高分辨率的经过时间显示,但更新分辨率更低。)
答案 2 :(得分:0)
如果您愿意接受依赖,可以使用Reactive Extensions(Rx)来获取计时器:
var timer = Observable.Interval(TimeSpan.FromMilliseconds(15))
.Subscribe(() => /* handler */ );
Rx将确保在创建订阅的同一线程上调用处理程序,并且它使用System.Threading.Timer,因此它具有相当高且一致的分辨率。