Control BackgroundWorker menjalankan code dibelakang layar, tanpa mempengaruhi form yang mengeksekusi perintah. Sering dipakai untuk proses import/export data atau eksekusi code lain yang membutuhkan waktu lama. Setelah beres eksekusi code, BackgroundWorker akan mengembalikan hasil nya ke form. BackgroundWorker ada di Toolbox-> All Windows Form, mirip pada gambar berikut: Untuk lebih terperinci tentang penggunaan control ini, mari kita buat aplikasi dengan loop (putaran) yang menyantap waktu cukup usang sebagai berikut: UI: BackgroundWorker tidak akan ditampilkan di form melaikan di bab bawah (area abu-bubuk). Tambahkan suatu textbox untuk menampilkan "putaran ke-", button 1 untuk mengawali putaran, dan button 2 untuk cancel proses. Kita juga menambahkan progress kafe. Code: Keterangan aba-aba pada comment berwarna hijau. Imports System.ComponentModel Public Class Form1 Dim iMax As Integer = 200 'iterasi maksimal Private Sub Form1_Load(sender As Object , e As EventArgs ) Handles Me .Load 'untuk mencegah error ketika background proses mengubah UI Control .CheckForIllegalCrossThreadCalls = False With BackgroundWorker1 .WorkerReportsProgress = True 'catat nilai progress .WorkerSupportsCancellation = True 'semoga bisa cancel End With 'setting nilai maksimum progress kafe ProgressBar1.Maximum = iMax 'UI Teks untuk button Button1.Text = "Start" Button2.Text = "Cancel" End Sub Private Sub Button1_Click(sender As Object , e As EventArgs ) _ Handles Button1.Click 'Menjalankan proses background BackgroundWorker1.RunWorkerAsync() End Sub Private Sub Button2_Click(sender As Object , e As EventArgs ) _ Handles Button2.Click 'Membatalkan proses background BackgroundWorker1.CancelAsync() BackgroundWorker1.Dispose() End Sub Private Sub BackgroundWorker1_DoWork(sender As Object , _ e As System.ComponentModel . DoWorkEventArgs ) _ Handles BackgroundWorker1.DoWork 'mulai iterasi For i = 0 To iMax 'handle bila ada cancel If BackgroundWorker1.CancellationPending = True Then e.Cancel = True Exit For Else 'proses wajar tanpa cancel TextBox1.Text = i 'menampilkan iterasi ke pada textbox 'mengantarprogress iterasi BackgroundWorker1.ReportProgress(i) 'semoga proses berhenti sejenak 1000 milidetik = 1 detik System.Threading.Thread.Sleep(1000) End If Next End Sub Private Sub BackgroundWorker1_ProgressChanged(sender As Object , _ e As ProgressChangedEventArgs ) _ Handles BackgroundWorker1.ProgressChanged ProgressBar1.Value = e.ProgressPercentage End Sub Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object , _ e As RunWorkerCompletedEventArgs ) _ Handles BackgroundWorker1.RunWorkerCompleted If e.Cancelled = True Then MsgBox( "Proses Dibatalkan" ) Else MsgBox( "Proses Selesai" ) End If End Sub End Class Runtime: Jalankan program dan klik tombol Start. Jika saat proses berjalan kita klik tombol cancel maka proses akan berhenti dan timbul pesan berikut: Sementara kalau kita biarkan sampai proses tamat, akan timbul pesan berikut. Click here if you like this article. Sumber http://rani-irsan.blogspot.com