//File:Window.xaml.vb Imports System Imports System.Windows Imports System.Windows.Controls Imports System.Windows.Threading Imports System.Threading Namespace WpfApplication1 Public Partial Class Window1 Inherits Window Public Delegate Sub NextPrimeDelegate() Private num As Long = 1 Private continueCalculating As Boolean = False Public Sub New() MyBase.New() InitializeComponent() End Sub Public Sub StartOrStop(sender As Object, e As EventArgs) If continueCalculating Then continueCalculating = False startStopButton.Content = "Resume" Else continueCalculating = True startStopButton.Content = "Stop" startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, New NextPrimeDelegate(AddressOf CheckNextNumber)) End If End Sub Public Sub CheckNextNumber() numberTextBlock.Text = num.ToString() num += 2 If continueCalculating Then startStopButton.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.SystemIdle, New NextPrimeDelegate(AddressOf Me.CheckNextNumber)) End If End Sub End Class End Namespace