//File:Window.xaml.vb Imports System Imports System.ComponentModel Imports System.Windows Namespace WpfApplication1 Public Partial Class Window1 Inherits Window Private worker As New BackgroundWorker() Private from As Long = 2 Private [to] As Long = 2000 Private biggestPrime As Long Public Sub New() MyBase.New() InitializeComponent() worker.WorkerSupportsCancellation = True AddHandler worker.DoWork, New DoWorkEventHandler(AddressOf worker_DoWork) AddHandler worker.RunWorkerCompleted, New RunWorkerCompletedEventHandler(AddressOf worker_RunWorkerCompleted) End Sub Private Sub StartStop_Click(sender As Object, e As RoutedEventArgs) If Not worker.IsBusy Then worker.RunWorkerAsync() btnStartStop.Content = "Cancel" txtBiggestPrime.Text = String.Empty Else worker.CancelAsync() End If End Sub Private Sub worker_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) If e.Cancelled Then MessageBox.Show("Operation was canceled") End If btnStartStop.Content = "Start" txtBiggestPrime.Text = biggestPrime.ToString() End Sub Private Sub worker_DoWork(sender As Object, e As DoWorkEventArgs) For current As Long = from To [to] If worker.CancellationPending Then e.Cancel = True Return End If biggestPrime = current Next End Sub End Class End Namespace