--> Skip to main content
Pelajar Koding

follow us

Vb.Net: Backgroundworker Control

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

You Might Also Like:

Comment Policy: Silahkan tuliskan komentar Anda yang sesuai dengan topik postingan halaman ini. Komentar yang berisi tautan tidak akan ditampilkan sebelum disetujui.
Buka Komentar