Search code examples
c#windows-phonewindows-phone-8

How to schedule a repeating task to count down a number in windows phone 8


I need to just have a simple task that runs as long as the user is on one specific screen. On this screen there is a count down timer.

I looked into Background Agents - but that seems not to be the right approach.

Basically it should work like this: The user goes to this one screen, presses start and the cont down timer starts to count down - every 30 seconds update is perfectly ok.

How should I do this on WP8 ?


Solution

  • You should use a DispatcherTimer as wkempf points out. Pretty simple to create actually. Something like this (where you have a TextBlock named countText in your xaml:

    public partial class MainPage : PhoneApplicationPage
    {
        private DispatcherTimer _timer;
        private int _countdown;
    
        // Constructor
        public MainPage()
        {
            InitializeComponent();
    
            _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();
            }
    
            countText.Text = _countdown.ToString();
        }
    }