Timer in WPF using VB.NET

This article demonstrates how to implement timer in WPF using the DispatchTimer class using Visual Basic .NET.
  • 588
 

This article demonstrates how to implement timer in WPF using the DispatchTimer class.

In this article and the attached project, I am going to create a WPF application that has a ListBox control and this control is being updated every second with current time.  The application looks like Figure 1. 

WpfTimerImg1.gif
 

Figure 1

Creating a DispatchTimer

XAML does not support any timer feature and WPF does not have a Timer control or class. The DispatchTimer class defined in the System.Windows.Threading namespace is used to add timer functionality in WPF.

The following code snippet creates a DispatchTimer object.

Dim dt As DispatcherTimer = New DispatcherTimer()

 

Setting Tick and Interval

The Tick event handler executes when a DispatchTimer is started on a given Interval. The following code snippet sets the Tick and Interval of a DispatchTimer.

   

        AddHandler dt.Tick, AddressOf dispatcherTimer_Tick

        dt.Interval = New TimeSpan(0, 0, 1)

 

Start DispatchTimer

The Start method is used to start a DispatchTimer.

   

        dt.Start()

 

Complete Code Example

The code snippet in Listing 1 creates a DispatchTimer, sets its Tick event and Interval property and calls its Start method. The Start method starts the timer and the Tick event handler is executed on the given Interval value. In this code, on the Tick event handler, I update a ListBox control and add the current time. I also set the selected item of the ListBox to the currently added item and make sure this item is visible in the ListView.

 


 

Imports System.Windows.Threading

 

Class Window1

 

    Private Sub Window_Loaded(ByVal sender As System.ObjectByVal e AsSystem.Windows.RoutedEventArgs) _

        Handles MyBase.Loaded

 

        Dim dt As DispatcherTimer = New DispatcherTimer()

        AddHandler dt.Tick, AddressOf dispatcherTimer_Tick

        dt.Interval = New TimeSpan(0, 0, 1)

        dt.Start()

 

    End Sub

 

    Public Sub dispatcherTimer_Tick(ByVal sender As ObjectByVal e As EventArgs)

        listBox1.Items.Add(DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Second.ToString())

        CommandManager.InvalidateRequerySuggested()

        listBox1.Items.MoveCurrentToLast()

        listBox1.SelectedItem = listBox1.Items.CurrentItem

        listBox1.ScrollIntoView(listBox1.Items.CurrentItem)

    End Sub

End Class

 

Listing 1

Summary

In this article, I discussed how we can create a DispatchTimer control to build timer applications in WPF and C#.  We saw, how to update a ListBox control every second with the current time.  

Categories

More Articles

© 2013 dotNetheaven. All rights reserved.