Imports System.ComponentModel
Public Class Form1
Private WithEvents bgw As BackgroundWorker = New BackgroundWorker
Private Sub bgw_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bgw.DoWork
Dim ListText As String
For Value As Integer = 0 To 100
If bgw.CancellationPending Then
Exit For
End If
ListText = String.Concat("Sequence #", Value)
bgw.ReportProgress(Value, ListText)
Threading.Thread.Sleep(100)
Next
End Sub
Private Sub bgw_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles bgw.ProgressChanged
ProgressBar1.Value = e.ProgressPercentage
ListBox1.Items.Add(e.UserState)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Button1.Enabled = False
Button2.Enabled = True
ListBox1.Items.Clear()
ProgressBar1.Value = 0
bgw.WorkerReportsProgress = True
bgw.WorkerSupportsCancellation = True
bgw.RunWorkerAsync()
Me.Cursor = Cursors.WaitCursor
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
bgw.CancelAsync()
End Sub
Private Sub bgw_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bgw.RunWorkerCompleted
Button1.Enabled = True
Button2.Enabled = False
Me.Cursor = Cursors.Arrow
End Sub
End Class