The DispatcherTimer is reevaluated at the top of every DispatcherTimer loop.
Timers are not guaranteed to execute exactly when the time interval occurs, but they are guaranteed to not execute before the time interval occurs. This is because DispatcherTimer operations are placed on the DispatcherTimer queue like other operations. When the DispatcherTimer operation executes is dependent on the other jobs in the queue and their priorities.
If a System.Threading..::.Timer is used, it is worth noting that the Timer runs on a different thread then the user interface (UI) thread. In order to access objects on the UI thread, it is necessary to post the operation onto the DispatcherTimer of the UI thread using Dispatcher..::.BeginInvoke. This is unnecessary when using a DispatcherTimer.
A DispatcherTimer will keep an object alive whenever the object's methods are bound to the timer.