如何暂停dispatcherTimer

时间:2017-12-09 14:21:05

标签: c# timer dispatcher

你好,我正在研究我在学校的第一个项目,这是一个简单的Brick-Breaker游戏。 当我点击" Pause"我遇到了一个问题。按钮,计时器停止,但当我点击"继续"按钮,计时器继续,好像游戏从未暂停。 我一直在寻找答案,但却无法找到一个可以融入我的程序的程序(我只编程了2个月。)

我的程序已经准备好了,而且所有程序都分为类和方法,因此我要更准确地粘贴重要的行,但是我会给它一个无论如何都要尝试。

我尝试了几种解决方案,比如创建一个秒表,然后将计时器声明为

_time.Text =(duration.TotalSeconds - pausingTimer.Elapsed.TotalSeconds).ToString

但不幸的是,这种思维方式让我无处可去。这些线条会影响游戏的暂停和继续功能。:

  //data members (of Game Manager class)
private DispatcherTimer gamingLoopTimer = new DispatcherTimer();
 private DateTime _startTime;
 private TimeSpan _timeSpan;
 private Stopwatch pausingTimer = new Stopwatch();

  //ct'or
_timeSpan = new TimeSpan(0, 0, 0, 0, 1);
_difficultyTimeSpan = new TimeSpan(0, 0, 0, 0, 800);

 public void StartGame()
    {
        gamingLoopTimer.Interval = _timeSpan;
        gamingLoopTimer.Tick += GamingLoopHandler;
        gamingLoopTimer.Start();

        increasingDifficultyTimer.Interval = _difficultyTimeSpan;
        increasingDifficultyTimer.Tick += IncreasingDifficulty;
        increasingDifficultyTimer.Start();


        _startTime = DateTime.Now;

 private void GamingLoopHandler(object sender, object e)
    {
        UpdateGameState();
        DrawState();
    }

 private void DrawState()
    {
        TimeSpan duration = DateTime.Now - _startTime;  
        _time.Text = (duration.TotalSeconds - pausingTimer.Elapsed.TotalSeconds).ToString

public void StopButton()
    {
        pausingTimer.Start();
        gamingLoopTimer.Stop();
        increasingDifficultyTimer.Stop();           
        _hasStopped = true;

        PromptGameStop();
    }

  private void ContinueToPlay(IUICommand command)
    {
        pausingTimer.Stop();
        pausingTimer.Reset();
        gamingLoopTimer.Start();
        increasingDifficultyTimer.Start();
        _hasStopped = false;
    }

注意:我已经尝试仅复制问题的重要代码,我希望我没有删除任何对理解答案者重要的内容。

如上所述,计时器停止,但随后继续,好像它从未停止过一样。

例如,我应该按"暂停"按钮在5秒标记处,然后单击"继续" 15秒后,计时器将从20继续。

感谢您的回答。

0 个答案:

没有答案