//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 = 20000 Private biggestPrime As Long Public Sub New() MyBase.New() InitializeComponent() worker.WorkerReportsProgress = True AddHandler worker.DoWork, New DoWorkEventHandler(AddressOf worker_DoWork) AddHandler worker.RunWorkerCompleted, New RunWorkerCompletedEventHandler(AddressOf worker_RunWorkerCompleted) AddHandler worker.ProgressChanged, AddressOf worker_ProgressChanged End Sub Private Sub StartStop_Click(sender As Object, e As RoutedEventArgs) worker.RunWorkerAsync() btnStartStop.IsEnabled = False txtBiggestPrime.Text = String.Empty End Sub Private Sub worker_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) btnStartStop.IsEnabled = True txtBiggestPrime.Text = biggestPrime.ToString() End Sub Private Sub worker_DoWork(sender As Object, e As DoWorkEventArgs) For current As Long = from To [to] biggestPrime = current Dim percentComplete As Integer = Convert.ToInt32((CDbl(current) / [to]) * 100.0) worker.ReportProgress(percentComplete) System.Threading.Thread.Sleep(10) Next End Sub Private Sub worker_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) txtPercent.Text = e.ProgressPercentage.ToString() & "%" End Sub End Class End Namespace