Mega Code Archive

 
Categories / C# / WPF
 

Update the UI Asynchronously on a Timer

<Window x:Class="WpfApplication1.Window1"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     Title="WPF" Height="100" Width="300">     <StackPanel>         <Button x:Name="button" Click="Button_Click">Start Timer</Button>         <TextBlock x:Name="txtStatus">         </TextBlock>     </StackPanel> </Window> //File:Window.xaml.cs using System; using System.Windows; using System.Windows.Threading; namespace WpfApplication1 {     public partial class Window1 : Window     {         private DispatcherTimer timer;                   public Window1()         {             InitializeComponent();         }         private void Button_Click(object sender, RoutedEventArgs e)         {             if(timer == null || !timer.IsEnabled)             {                 timer = new DispatcherTimer();                 timer.Interval = TimeSpan.FromMilliseconds(1000);                 timer.Tick += new EventHandler(timer_Tick);                 timer.Start();                 button.Content = "Stop Timer";             }             else             {                 timer.Stop();                 button.Content = "Start Timer";             }         }         private void timer_Tick(object sender, EventArgs e)         {             txtStatus.Text = DateTime.Now.Second.ToString();         }     } }