dotnetspider.com
Login Login    Register      

TutorialsForumCareer DevelopmentResourcesReviewsJobsInterviewCommunitiesProjectsTraining

Subscribe to Subscribers
Talk to Webmaster
Tony John

Facebook
Google+
Twitter
LinkedIn
Online Membersbaskar
More...
Join our online Google+ community for Bloggers, Content Writers and Webmasters




Resources » .NET programming » WPF

WPF Timer (DispatcherTimer)


Posted Date:     Category: WPF    
Author: Member Level: Gold    Points: 30



 


This article discusses the WPF DispatcherTimer.

Most of us are from a background of C# (or VB.Net). You must have some point of time come across a scenario for performing a repetitive GUI operation after certain period of time. The solution in most cases has been the WinForm's Timer.

What about WPF ? Does it have a Timer ?

WPF no different to WinForm has it's own Timer equivalent. It is called DispatcherTimer. There are other options to get the Timer behavior but one of the most efficient for a Window based operation is the DispatcherTimer.

I have attached a sample Timer application demonstrating the functionality.

The window has a "Start timer" and "Stop timer" functionality. There is an input TextBox which takes the Timer frequency in milliseconds.

Just enter the Timer frequency in millisecond and hit the "Start timer" button. There is a status bar which displays the status of the time. At start it will be blank. When you start the Timer it will display the current Time and when you stop the Timer it will display the "Stopped" status.

Let us discuss the code to look into how we use it.

XAML,

< Window x:Class="TimerSample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Timer" Height="148" Width="300" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<Label Margin="50,5,5,5">Timer value:</Label>
<TextBox Name="time" Height="20">1000</TextBox>
<Label Margin="0,5,5,5" FontWeight="Bold">ms</Label>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Button Margin="50,5,5,5" Click="Start_Click">Start timer</Button>
<Button Margin="5,5,75,5" Click="Stop_Click">Stop timer</Button>
</StackPanel>
<TextBlock Name="status" Margin="0,35,0,0" Background="LightGray" Height="20" Padding="25,0,0,0">Not working</TextBlock>
</StackPanel>
</Window>


Code behind,

public partial class Window1 : Window
{
DispatcherTimer _timer;

public Window1()
{
InitializeComponent();

_timer = new DispatcherTimer();
_timer.Tick += new EventHandler(delegate(object s, EventArgs a)
{
status.Text = "Started: " + DateTime.Now;
//MessageBox.Show("Dummy message"); //notify timer end
//this.Close(); //close application
});
}

private void Start_Click(object sender, RoutedEventArgs e)
{
// Set the Interval
_timer.Interval = TimeSpan.FromMilliseconds(Convert.ToDouble(time.Text));

// Start the timer
_timer.Start();

status.Text = "Started";
}

private void Stop_Click(object sender, RoutedEventArgs e)
{
// Stop the timer
_timer.Stop();

status.Text = "Stopped";
}
}


We have a local variable of type DispatcherTimer - _timer. We manipulate this variable to start and stop the timer. At start we initialize the variable with an Event delegate to fire whenever the Timer ticks.

_timer.Tick += new EventHandler(delegate(object s, EventArgs a)
{
status.Text = "Started: " + DateTime.Now;
//MessageBox.Show("Dummy message"); //notify timer end
//this.Close(); //close application
});


I have specifically left the commented lines to show the different possibilities that can be done in the Event delegate. Whenever the Timer ticks the event is fired and Status bar is updated with the most recent DateTime.

DispatcerTimer runs on the UI thread and hence does not need marshaling back and forth as we have to do in the normal cases of a Thread.

Have fun.

Attachments
  • WPFTimer (29705-281226-TimerSample.rar)
    Reference http://abitsmart.com/?p=127





  • Did you like this resource? Share it with your friends and show your love!


    Responses to "WPF Timer (DispatcherTimer)"

    No responses found. Be the first to respond...

    Feedbacks      

    Post Comment:




  • Do not include your name, "with regards" etc in the comment. Write detailed comment, relevant to the topic.
  • No HTML formatting and links to other web sites are allowed.
  • This is a strictly moderated site. Absolutely no spam allowed.
  • Name:   Sign In to fill automatically.
    Email: (Will not be published, but required to validate comment)



    Type the numbers and letters shown on the left.


    Next Resource: WPF Combobox Databind to a Dataset
    Previous Resource: Fundamentals of WPF
    Return to Resources
    Post New Resource
    Category: WPF


    Post resources and earn money!
     
    More Resources
    Popular Tags   Tag posting guidelines   Search Tags  
    WPF Timer  .  Timer in WPF  .  Dispatcher Timer in WPF  .  WPF DispatcherTimer  .  



    Follow us on Twitter: https://twitter.com/dotnetspider

    Active Members
    TodayLast 7 Daysmore...

    Awards & Gifts
    Email subscription
  • .NET Jobs
  • .NET Articles
  • .NET Forums
  • Articles Rss Feeds
    Forum Rss Feeds


    About Us    Contact Us    Copyright    Privacy Policy    Terms Of Use    Revenue Sharing sites   Advertise   Talk to Tony John
    Copyright © SpiderWorks Technologies Pvt Ltd., Kochi, India
    2005 - 2012 All Rights Reserved.
    .NET and other trademarks mentioned in this site belong to Microsoft and other respective trademark owners.
    Articles, tutorials and all other content offered here is for educational purpose only.
    We are not associated with Microsoft or its partners.