Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click BackgroundWorker1.RunWorkerAsync() End Sub Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork Dim cnt As Integer = 0 While cnt < 5 If BackgroundWorker1.CancellationPending Then Return System.Threading.Thread.Sleep(1000) cnt += 1 BackgroundWorker1.ReportProgress(cnt) End While End Sub Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As System.Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged TextBox1.Text += "..." TextBox1.Text += e.ProgressPercentage.ToString TextBox1.Text += vbCrLf End Sub Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted TextBox1.Text += "End Of Thread!!" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click BackgroundWorker1.CancelAsync() End Sub