Search code examples
c#timerwindows-phone-8.1countdown

Timer gets faster on next calls wp8.1


i have a countdown timer like this:

    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;
   }  

it works fine until i call initialize_timer() again. the timer gets faster on every call. note that _countdown will be a dynamic value based on a future time so it will change on each call.


Solution

  • When you call initialize_timer(), you create a new Timer but your old Timer is still there and ticking. Just remove the lines

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

    and you'll be OK.