0

我正在 Winforms (c#) 中创建一个游戏,并且我制作了一个计时器来跟踪正在进行的时间,并且当游戏停止时计时器停止。但是我没有成功保存计时器在游戏停止时显示的时间并将其发布。

这就是我建立定时器功能的方式。

private Timer timers;
public event EventHandler Tick;

StartGame()
{
  ...
  timers = new Timer();
  timers.Interval = 1000;
  timers.Tick += new EventHandler(TimerTick);
  timers.Enabled = true;
}

private void TimerTick(object sender, EventArgs e) 
{
  Time++;
  OnTick();
}

protected void OnTick() 
{
   if (Tick != null) 
   {
      Tick(this, new EventArgs());
   }     
}
4

1 回答 1

2

不要使用计时器来测量时间 - 计时器永远不会准确,它们应该用于触发事件,仅此而已。尤其是System.Windows.Forms.Timer在 GUI 线程中运行并且可能被其他消息阻止的那些。

根据您的问题,您想要跟踪游戏时间。这是我的做法:

private Stopwatch _sw = new Stopwatch();

public void StartOrResumeGame() {
    _sw.Start();
}
public void StopOrPauseGame() {
    _sw.Stop();
    _gameTimeMessage = String.Format("You have been playing for {0} seconds.", _sw.TotalSeconds);
}
于 2013-03-14T19:49:49.750 回答