Example 1: In Windows Forms applications
Create a new Windows Forms Application:
For WinForms applications we make use of the System.Windows.Forms.Timer
private static readonly Timer Timer = new Timer();
Some common Timer tasks are to:
1. Subscribe to the event that is called when the interval has elapsed:
Timer.Tick += TimerEventProcessor;
2. Set the Timer interval:
Timer.Interval = 5000;
3. Start the timer (these are equivalent):
Timer.Start(); Timer.Enabled = true;
4. Stop the timer (these are equivalent):
Timer.Stop(); Timer.Enabled = false;
Example Usage:
using System; using System.Windows.Forms; namespace TimerAppWinForms { public partial class Form1 : Form { private const string Caption = "Interval elapsed. Continue running?"; private static readonly Timer Timer = new Timer(); public Form1() { InitializeComponent(); Timer.Tick += TimerEventProcessor; Timer.Interval = 5000; Timer.Start(); } // This is the method to run when the timer is raised. private static void TimerEventProcessor(object myObject, EventArgs myEventArgs) { Timer.Stop(); var result = MessageBox.Show(Caption, "", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { Timer.Start(); } } } }
When run we are initially presented with the default form:
And after the 5 second (5000 millisecond) interval has elapsed, the function that handles this event is run, presenting the user with a dialog to either continue with the timed event or exit:
Example 2: In Console Applications
Create a new Console Application:
When using timers in Console applications we must instead use System.Timers.Timer:
var timer = new System.Timers.Timer();
As with the previous WinForms example, we subscribe the appropriate event (this time called ‘Elapsed’), set the time interval and kick off the timer:
timer.Elapsed += new ElapsedEventHandler(TimerEventProcessor); timer.Interval = 5000; timer.Start();
Full code sample looks like this:
using System; using System.Timers; namespace TimerAppConsole { internal class Program { private static void Main(string[] args) { var timer = new Timer(); timer.Elapsed += TimerEventProcessor; timer.Interval = 5000; timer.Start(); Console.WriteLine("Press \'q\' to quit the sample."); while (Console.Read() != 'q') { } } private static void TimerEventProcessor(object myObject, EventArgs myEventArgs) { Console.WriteLine("Time Elapsed..."); } } }
Giving the following Console output: