DispatcherTimer.Interval property

Applies to Windows and Windows Phone

Gets or sets the amount of time between timer ticks.


public TimeSpan Interval { get; set; }

Property value

Type: System.TimeSpan [.NET] | Windows::Foundation::TimeSpan [C++]

The amount of time between ticks. The default is a TimeSpan with value evaluated as 00:00:00.


The DispatcherTimer can be used to run code on the same thread that produces the UI thread. Code running on this thread has the privilege to create and modify objects that can only be created and modified on the UI thread. To specify that code should run on the UI thread, set the Interval property and then call the Start method. The Tick event fires after the time specified in Interval has elapsed. Tick continues firing at the same Interval until the Stop method is called, the app terminates, or the app is suspended (fires Suspending).

How you declare a TimeSpan depends on your programming language. For Visual C++ component extensions (C++/CX), use Windows.Foundation.TimeSpan. For C# and Microsoft Visual Basic, use System.TimeSpan.


This example code implements a simple console-style timer that writes data to a TextBlock named "TimerLog" (XAML that defines "TimerLog" is not shown). The Interval value is set to 1, and the log displays the actual elapsed time for each Tick.

        DispatcherTimer dispatcherTimer;
        DateTimeOffset startTime;
        DateTimeOffset lastTime;
        DateTimeOffset stopTime;
        int timesTicked = 1;
        int timesToTick = 10;

        public void DispatcherTimerSetup()
            dispatcherTimer = new DispatcherTimer();
            dispatcherTimer.Tick += dispatcherTimer_Tick;
            dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
            //IsEnabled defaults to false
            TimerLog.Text += "dispatcherTimer.IsEnabled = " + dispatcherTimer.IsEnabled + "\n";
            startTime = DateTimeOffset.Now;
            lastTime = startTime;
            TimerLog.Text += "Calling dispatcherTimer.Start()\n";
            //IsEnabled should now be true after calling start
            TimerLog.Text += "dispatcherTimer.IsEnabled = " + dispatcherTimer.IsEnabled + "\n";

        void dispatcherTimer_Tick(object sender, object e)
            DateTimeOffset time = DateTimeOffset.Now;
            TimeSpan span = time - lastTime;
            lastTime = time;
            //Time since last tick should be very very close to Interval
            TimerLog.Text += timesTicked + "\t time since last tick: " + span.ToString() + "\n";
            if (timesTicked > timesToTick)
                stopTime = time;
                TimerLog.Text += "Calling dispatcherTimer.Stop()\n";
                //IsEnabled should now be false after calling stop
                TimerLog.Text += "dispatcherTimer.IsEnabled = " + dispatcherTimer.IsEnabled + "\n";
                span = stopTime - startTime;
                TimerLog.Text += "Total Time Start-Stop: " + span.ToString() + "\n";
        private void Page_Loaded_1(object sender, RoutedEventArgs e)


Minimum supported client

Windows 8

Minimum supported server

Windows Server 2012

Minimum supported phone

Windows Phone 8.1 [Windows Runtime apps only]


Windows::UI::Xaml [C++]



See also




© 2014 Microsoft