1

我正在为游戏做一个简单的高分插件。为此,我需要一个精确的计时器,可以在标签中显示经过的时间。到目前为止,我已经尝试了以下方法:

Windows.Forms.Timer:不保持高分辨率间隔,有些较慢,有些较快。

System.Diagnostics.Stopwatch:没有刻度事件。

我还想过实现一个低分辨率的 Forms.Timer。然后,当计时器启动和停止时,我会存储系统时间并减去它们以获得经过的时间。但我不想让事情过于复杂。有任何想法吗?

4

3 回答 3

3

使用从某个时刻开始的经过时间。比任何一个:

  • 选择任何计时器,将其设置为 15 毫秒并在每个刻度上显示经过的时间(如果您正在处理 WinForm/WPF 控件,应该可以)
  • 在每次帧刷新时显示新值(如果您的代码在每次帧刷新时得到通知/调用)
于 2013-07-30T17:27:02.173 回答
3

我认为使用 a Stopwatch(因为它的高分辨率)和 low-resolution的组合不会过于复杂Windows.Forms.Timer

使用Stopwatch起来非常简单,因此它也不会增加使用 a 的复杂性Timer

(这假设您可以使用高分辨率的经过时间显示,但使用较低分辨率的更新间隔。)

于 2013-07-30T17:27:11.020 回答
0

如果你愿意接受依赖,你可以使用Reactive Extensions (Rx) 来获得一个计时器:

var timer = Observable.Interval(TimeSpan.FromMilliseconds(15))
            .Subscribe(() => /* handler */ );

Rx 将确保在创建订阅的同一线程上调用处理程序,并且在后台它使用 System.Threading.Timer,因此它具有相当高且一致的分辨率。

于 2013-07-30T18:09:07.050 回答