我正在Winforms(c#)中创建一个游戏,我已经制作了一个计时器来跟踪正在进行的时间,并且当游戏停止时计时器停止。但是我没有成功地节省了游戏停止和发布时计时器显示的时间。
这就是我建立Timer函数的方法。
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());
}
}
答案 0 :(得分:1)
不要使用计时器来测量时间 - 计时器永远不准确,它们应该用于触发事件,仅此而已。尤其不是在GUI线程中运行的System.Windows.Forms.Timer
,并且可以被其他消息阻止。
根据您的问题,您需要跟踪游戏时间。我将如何做到这一点:
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);
}