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.vb
Imports System
Imports System.Windows
Imports System.Windows.Threading
Namespace WpfApplication1
Public Partial Class Window1
Inherits Window
Private continueCalculating As Boolean = False
Public Sub New()
MyBase.New()
InitializeComponent()
End Sub
Private Sub StartStop_Click(sender As Object, e As RoutedEventArgs)
If continueCalculating Then
continueCalculating = False
btnStartStop.Content = "Start"
Else
continueCalculating = True
btnStartStop.Content = "Stop"
Me.Dispatcher.BeginInvoke(DispatcherPriority.Normal, New Action(Of Integer)(AddressOf UpdateNumber), 3)
End If
End Sub
Public Sub UpdateNumber(current As Integer)
txtNumber.Text = current.ToString()
If continueCalculating Then
Me.Dispatcher.BeginInvoke(DispatcherPriority.SystemIdle, New Action(Of Integer)(AddressOf UpdateNumber), current + 2)
End If
End Sub
End Class
End Namespace
Related examples in the same category