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 に答える