Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在下一次调用wp8.1时,计时器变得更快_C#_Timer_Windows Phone 8.1_Countdown - Fatal编程技术网

C# 在下一次调用wp8.1时,计时器变得更快

C# 在下一次调用wp8.1时,计时器变得更快,c#,timer,windows-phone-8.1,countdown,C#,Timer,Windows Phone 8.1,Countdown,我有这样一个倒计时器: private DispatcherTimer _timer; private int _countdown; private void initialize_timer() { _countdown = 100; _timer = new DispatcherTimer(); _timer.Interval = TimeSpan.FromSeconds(1); _timer.Tic

我有这样一个倒计时器:

    private DispatcherTimer _timer;
    private int _countdown;

    private void initialize_timer()
   {

       _countdown = 100;
       _timer = new DispatcherTimer();
       _timer.Interval = TimeSpan.FromSeconds(1);
       _timer.Tick += (s, e) => Tick();
       _timer.Start();
   }
   private void Tick()
   {
       _countdown--;
       if (_countdown == 0)
       {
           _timer.Stop();
       }

       TimeSpan time = TimeSpan.FromSeconds(_countdown);
       string str = time.ToString(@"dd\:hh\:mm\:ss");
       RemainingTime.Text = str;
   }  

在我再次调用initialize_timer()之前,它工作正常。每次通话计时器都会变快。请注意,“倒计时”将是一个基于未来时间的动态值,因此它将在每次调用时更改。

当您调用
初始化\u timer()
时,您将创建一个新的
计时器,但旧的
计时器仍在那里并在滴答作响。只要把线移开就行了

_timer = new DispatcherTimer();
_timer.Tick += (s, e) => Tick();

你会没事的。

计时器会变快
或者你会得到很多
滴答声()
包括旧的?我不知道。我看到所有的秒,但变化更快。当我删除它时,计时器变为null,Crassesi认为他的意思是
if(_timer==null)\u timer=new DispatchTimer(),将其初始化一次;但是还需要做更多的更改。@Petesh谢谢,你说得对,实际上
initialize\u计时器
预计只运行一次。顺便说一句,我编辑了答案以反映您的评论。我将代码更改为:if(_timer==null){u timer=newdispatchermer();_timer.Tick+=(s,e)=>Tick();}