Show a Continuous Progress Bar While Processing on a Background Thread
<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" Height="100" Width="200"> <StackPanel> <ProgressBar Name="progressBar"/> <Button Name="button" Click="button_Click">Start</Button> </StackPanel> </Window> //File:Window.xaml.vb Imports System.ComponentModel Imports System.Threading Imports System.Windows Imports System.Windows.Input Namespace WpfApplication1 Public Partial Class Window1 Inherits Window Private worker As New BackgroundWorker() Public Sub 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 button_Click(sender As Object, e As RoutedEventArgs) If Not worker.IsBusy Then Me.Cursor = Cursors.Wait progressBar.IsIndeterminate = True button.Content = "Cancel" worker.RunWorkerAsync() Else worker.CancelAsync() End If End Sub Private Sub worker_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Me.Cursor = Cursors.Arrow If e.[Error] IsNot Nothing Then MessageBox.Show(e.[Error].Message) End If button.Content = "Start" progressBar.IsIndeterminate = False End Sub Private Sub worker_DoWork(sender As Object, e As DoWorkEventArgs) For i As Integer = 1 To 100 If worker.CancellationPending Then Exit For End If Thread.Sleep(50) Next End Sub End Class End Namespace