Mega Code Archive

 
Categories / C# / WPF
 

Execute a Method Asynchronously Using the Dispatcher Queue

<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" Width="220" Height="104" >     <StackPanel Orientation="Vertical">         <Button Click="StartStop_Click" Name="btnStartStop">Start</Button>         <StackPanel Orientation="Horizontal">             <TextBlock>Biggest Prime Found:</TextBlock>             <TextBlock Name="txtNumber"/>         </StackPanel>     </StackPanel> </Window> //File:Window.xaml.cs using System; using System.Windows; using System.Windows.Threading; namespace WpfApplication1 {     public partial class Window1 : Window     {         private bool continueCalculating = false;         public Window1() : base()         {             InitializeComponent();         }         private void StartStop_Click(object sender, RoutedEventArgs e)         {             if(continueCalculating)             {                 continueCalculating = false;                 btnStartStop.Content = "Start";             }             else             {                 continueCalculating = true;                 btnStartStop.Content = "Stop";                 this.Dispatcher.BeginInvoke(DispatcherPriority.Normal,new Action<int>(UpdateNumber), 3);             }         }         public void UpdateNumber(int current)         {             txtNumber.Text = current.ToString();             if(continueCalculating)             {                 this.Dispatcher.BeginInvoke(DispatcherPriority.SystemIdle,new Action<int>(UpdateNumber), current + 2);             }         }     } }