BackgroundWorker pada Windows Aplikasi Menggunakan C#

dokumen-dokumen yang mirip
Asynchronous Programming (Async dan Await) pada C# 6.0

Membuat Animasi pada Splash Screen. Android App. menggunakan Xamarin

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

Membuat Splash Screen pada Android App menggunakan Xamarin

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

XAMARIN ANDROID : Membangun. Aplikasi Mobile Dengan GridView

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

MENGGANTI TEXT PADA XP START BUTTON

EXPORT DATA DARI ACCESS TABLE KE TXT / CSV FILE

MULTIPLE BINDINGNAVIGATOR PADA VB 2008

XAMARIN ANDROID : Bekerja

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

STEP X Library Not Registered

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

Membuat Aplikasi Android Login Screen Menggunakan SQLITE dan XAMARIN

Endi Dwi Kristianto

Krisna D. Octovhiana. 1.1 Apa itu Operator?

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

Krisna D. Octovhiana. 1.1 Membuat User Interface (UI)

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

Krisna D. Octovhiana. 1.1 Membuat User Interface (UI)

Krisna D. Octovhiana. 1.1 Mengenal Struktur Kontrol.

Krisna D. Octovhiana. 1.1 Membuat User Interface (UI)

Junindar. Blog : Lisensi Dokumen:

I. JUDUL Array. Pengertian Array. Deklarasi Array PRAKTIKUM 6 ARRAY II. TUJUAN. III. ALAT DAN BAHAN - Microsoft Visual Studio 2010

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

M. Choirul Amri.

Krisna D. Octovhiana. 1.1 Mengenal Struktur Kontrol.

Krisna D. Octovhiana. 1.1 Apa itu Array?

M. Choirul Amri. 2.1 Membuat Project Baru.

Membuat Template Interaktif pada Microsoft Word 2010

Krisna D. Octovhiana. 1.1 Mengenal Data dan Variabel.

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

M. Choirul Amri

Puja Pramudya

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

Riyanto

Motion detection / deteksi gerakan dengan Delphi memanfaatkan komponen Video grabber (Share ware Version)

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

SHARP DEVELOP OPEN SOURCE IDE UNTUK.NET

Cepat Mahir Visual Basic 6.0. Cepat Mahir Visual Basic 6.0. Bab 10 Penggunaan Kontrol Array. Krisna D. Octovhiana

Panduan membuat aplikasi sederhana pada Smartphone berbasis Windows Mobile 5

(Label, Textbox, Command, Message Box, Validasi)

Fakultas Teknologi Informasi UJIAN AKHIR SEMESTER GENAP TAHUN AJARAN 2011/2013

BAB 2 LANDASAN TEORI

Koneksi Database Mysql dengan C#

Krisna D. Octovhiana

Taufik Adi Sanjaya. Menampilkan file Pdf pada form Delphi, ( baca : Delphi 7 )

C# Part 1 Pengenalan Logika Basic

Membuat Program Kriptografi dengan VB.Net 2010

Budi Permana, S.Kom

Pemrograman dengan C++ Builder 2004 Taryana S Pendahuluan C++ Builder adalah sebuah aplikasi yang digunakan untuk pengembangan dengan

Cara menghubungkan / mengkoneksikan database dinamis Microsoft Access dengan delphi menggunakkan ADOConnection dan ADOQuerypada Delphi 7

Modul Praktikum Ke-1

2.1 Membuat Aplikasi Berbasis Dialog Dengan Wizard

Cara menghubungkan / mengkoneksikan database dinamis Microsoft Access dengan delphi menggunakkan ADOConnection dan ADOTable pada Delphi 7

Laporan. Danu Wira Pangestu Lisensi Dokumen:

1. MENGENAL VISUAL BASIC

BAB I SEKILAS VISUAL STUDIO.NET 2008

MODUL 2 SELECTION & LOOPING PADA FORM

Bab I Pengenalan Visual BASIC

Mengakses Microsoft SQL Server dengan PHP

BAB II TINJAUAN PUSTAKA

[Tutorial VB6] Bab 4 Penggunaan Data dan Variabel

Nama Penulis Pendahuluan. Isi. Lisensi Dokumen:

BAB IX MENGENAL MS.ACCESS 2007

Otomasi Shell Script Lanjut

BAB 2 LANDASAN TEORI

Mengakses database Microsoft Access dengan Delphi 7.0

Perekam video dengan Delphi menggunakan komponen video grabber

BAB II MICROSOFT VISUAL STUDIO

Menggunakan grafik / chart pada Borland Delphi 7

Tutorial Menggunakan Movie Controller Knowledge Object

FORM DAN OBJEK KONTROL (1)

KUPAS TUNTAS PEMROGRAMAN VISUAL BASIC 6.0. Dilengkapi penjelasan Coding. Oleh: Didin Muhidin. Copyright 2016 by DiesAlfatih.

Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.

BAB 2 LANDASAN TEORI. Perangkat lunak adalah perintah ( program komputer ) yang bila dieksekusi

Junindar. Blog : Lisensi Dokumen:

Menampilkan Data/Tabel MySQL di Ms.Access

Tombol input mikrokontroller ditampilkan pada form aplikasi yang dibangun dengan Delphi 7

MODUL X DATABASE VB. Modul Praktikum Bahasa Pemrograman Visual (BPV)

Zaid Romegar Mair Lisensi Dokumen: Gambaran umum : Break statement

Framework CodeIgniter Part 1

Langkah Membuat Soal Pilihan Ganda dan Esai dengan Authorware 7

Mengakses database Microsoft Access dengan Delphi 7.0

BAB 2 LANDASAN TEORI

Membuat SlideShow Gambar

DASAR MENGGUNAKAN VISUAL BASIC 6.0

Membuat Slide Show Gambar

Krisnha D. Oktovhiana

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

BAB I Pengenalan Microsoft Visual Basic 6.0

Mengganti Password Akun Windows lewat CMD

TABEL DATABASE TABEL - KODE BARANG TOKO INFOMART BARANG - NAMA BARANG - HARGA

Transkripsi:

BackgroundWorker pada Windows Aplikasi Menggunakan C# junindar@gmail.com http://junindar.blogspot.com Lisensi Dokumen: Copyright 2003 IlmuKomputer.Com Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com. Abstrak BackgroundWorker merupakan kelas yang dibuat untuk menjalankan instruksi-instruksi pada Thread yang berbeda. BackgroundWorker dirancang untuk memudahkan dalam kebutuhan user interface seperti pada Windows Form maupun Windows Presentation Foundation (WPF). Pada BackgroundWorker terdapat beberapa event handler sehingga programmer dapat meletakkan baris kode kedalam event handler tersebut. Sehingga mendapatkan output yang diinginkan.

Pendahuluan BackgroundWorker merupakan kelas yang dibuat untuk menjalankan instruksi-instruksi pada Thread yang berbeda. BackgroundWorker dirancang untuk memudahkan dalam kebutuhan user interface seperti pada Windows Form maupun Windows Presentation Foundation (WPF). Pada BackgroundWorker terdapat beberapa event handler sehingga programmer dapat meletakkan baris kode kedalam event handler tersebut. Sehingga mendapatkan output yang diinginkan. Sebagai contoh BackgroundWorker biasa digunakan untuk operasi-operasi yang memerlukan waktu relatif lama. Dan bisa juga kita kombinasikasi dengan control progressbar untuk mendapatkan progress dari operasi yang lagi dilaksanakan. Karena operasi yang dijalankan menggunakan thread yang berbeda, maka user interface tidak akan freeze sehingga kita masih dapat memberikan intruksi lain melalui user interface kedalam program. Sebagai contoh, pada saat kita sedang menunggu operasi yang telah berjalan, kita dapat melakukan pembatalan operasi (cancel) dengan menggunakan button yang telah kita sediakan.

Isi Pada latihan ini kita akan membuat sebuah aplikasi untuk mengambil data dari textfile dan akan ditampilkan kedalam ListView. Pada form akan terdapat dua buah button (Start dan Stop), ListView dan ProgressBar. Untuk memudahkan memahami isi dari artikel ini, kita akan membuat sebuah project latihan, dimana kita akan menggunakan BackgroundWorker. Ikuti langkah-langkah dibawah ini. 1. Buat sebuah project dengan nama Latihan BackgroundWorker. 2. Ganti properties pada Form1 menjadi seperti berikut. Text = Form BackgroundWorker StartPosition = CenterScreen 3. Tambahkan control BackgroundWorker pada form, dan ganti properties nya seperti dibawah. WorkerReportProgress = true WorkerSupportCancellation = true 4. Tambah sebuah ProgressBar dan Label. Ganti text pada label manjadi In progress, please wait.... 5. Selanjutnya tambahkan dua buah button dan 1 buah ListView. Ganti properties kedua button tersebut seperti dibawah. Button 1 Name = btnload Text = Load Data Button 2 Name = btnstop Text = Stop Load Susun control-control tersebut seperti gambar dibawah.

Sebelum kita akan memulai coding, buat terlebih dahulu file txt, dengan format isinya sebagai berikut. Junindar;junindar@gmail.com;099788888 Arya;arya@yahoo.com;8770900 Simpan file txt tersebut dengan nama data.txt didalam folder debug (Latihan BackGroundWorker\Latihan BackGroundWorker\bin\Debug). Buka jendela code, lalu ketikkan sintaks dibawah private void SettingListView() lsvlist.view = View.Details; lsvlist.gridlines = true; lsvlist.fullrowselect = true; lsvlist.columns.add("no", 50, HorizontalAlignment.Left); lsvlist.columns.add("nama", 210, HorizontalAlignment.Left); lsvlist.columns.add("email", 200, HorizontalAlignment.Left); lsvlist.columns.add("no Telp", 150, HorizontalAlignment.Left); Method diatas digunakan untuk melakukan pengaturan pada ListView. Didalam ListView terdapat 4 kolom, dengan View nya diubah menjadi Detail. Lalu panggil method diatas pada event Form_Load seperti code dibawah.

private void Form1_Load(object sender, EventArgs e) SettingListView(); Selajutnya klik ganda button Load pada form. Button ini berfungsi untuk memulai proses load data dan ditampilkan di dalam ListView. try if (backgroundworker1.isbusy!= true) lsvlist.items.clear(); backgroundworker1.runworkerasync(); catch (Exception ex) MessageBox.Show(ex.Message); Dapat dilihat dari sintaks diatas, jika BackgroundWorker tidak busy, maka pertama-tama akan membersihkan ListView dari data-data yang ada sebelumnya (lsvlist.items.clear();) dan selanjutnya dengan dengan menjalankan BackgroundWorker (secara asynchronous). Perlu diketahui setelah kita menjalankan BackgroundWorker (backgroundworker1.runworkerasync();), maka proses yang akan dijalankan berada pada event handler DoWork. Selanjutnya buka Events DoWork pada BackgrounWorker. Pada properties BackgroundWorker klik button Events, selanjutnya pada DoWork klik ganda pada cell kosong disebelah DoWork.

Sehingga kita akan masuk kedalam jendela Code dan secara otomatis akan membuat Events DoWork. private void backgroundworker1_dowork(object sender, DoWorkEventArgs e) Tambahkan sintaks dibawah pada events diatas. BackgroundWorker worker = sender as BackgroundWorker; var linecount = File.ReadLines(Application.StartupPath + ("\\data.txt")).count(); Invoke(new MethodInvoker(delegate () progressbar1.maximum = linecount; )); Setelah mendeklarasikan BackgroundWorker dengan nama Worker, langkah selanjutnya adalah mengambil jumlah baris pada file txt yang telah kita buat sebelumnya diatas disimpan pada linecount. Variable linecount ini berfungsi untuk mengganti value dari properties Maximum pada progressbar. Dikarenakan proses ini dijalankan menggunakan thread yang berbeda maka untuk proses assign value progressbar harus menggunakan MethodInvoker Delegate. Lanjutkan penambahan sintaks seperti dibawah.

var sr = new StreamReader(Application.StartupPath + ("\\data.txt")); var i = 1; while (!sr.endofstream) if (worker.cancellationpending) e.cancel = true; break; var linetext = sr.readline().split(';'); Invoke(new MethodInvoker(delegate () ListViewItem itm = new ListViewItem(i.ToString()); itm.subitems.add(linetext[0]); itm.subitems.add(linetext[1]); itm.subitems.add(linetext[2]); lsvlist.items.add(itm); )); worker.reportprogress(i); i++; sr.close(); Selanjutnya dengan menggunakan StreamReader kita akan mengambil data pada file txt. Selanjutnya variable i akan digunakan untuk menampung nilai dari jumlah baris pada file. Dengan menggunakan fungsi while kita akan melakukan pengulangan untuk membaca file dengan cara membaca baris perbaris (while (!sr.endofstream)). Dan sebelum membuat sintaks membaca baris (sr.readline()) terlebih dahulu kita akan melakukan pengecekan apakah BackgroundWorker telah di lakukan proses Cancel, jika iya maka proses akan berhenti. Dan jika tidak akan di lanjutkan proses membaca file perbaris. Pada file txt yang dibuat sebelumnya dapat kita lihat kita menggunakan ; (titik koma) sebagai pemisah antara data. Jadi untuk mendapatkan data-data tersebut dan dimasukkan kedalam listview sesuai dengan kolom-kolom nya maka kita akan menggunakan fungsi split. Yang nanti nya output yang dihasilkkan berupa array. Dan

dengan menggunakan MethodInvoker Delegate kita akan memasukkan data-data tersebut kedalam ListView. worker.reportprogress(i); digunakan untuk mengantarkan value yang nanti nya akan kita gunakan didalam events ProgressChanged. Selanjutnya buat events ProgressChanged pada BackgroundWorker. Dan ketikkan sintaks dibawah. labelmessage.text = @"In progress, please wait... "; progressbar1.value = e.progresspercentage; Nilai i pada ReportProgress (worker.reportprogress(i);) digunakan untuk mengisi value dari progressbar. Sehingga progressbar akan selalu menampilkan progress terbaru pada antara muka. Buat events RunWorkerCompleted pada BackgroundWorker. Dan ketikkan sintaks dibawah. if (e.cancelled) labelmessage.text = @"Canceled!"; else if (e.error!= null) MessageBox.Show(@"Error: " + e.error.message); else labelmessage.text = @"Done!"; Dapat dilihat ada beberapa kondisi pada sintaks diatas yang hasilnya akan kita tampilkan pada Label. Events ini berfungsi untuk mendapatkan hasil dari BackgroundWorker setelah selesai di eksekusi. Dan yang terakhir adalah dengan membuat sintaks pada button Stop Load. Dimana button ini untuk melakukan pembatalan proses load yang sebelumnya dijalankan. Dikarenakan BackgroundWorker menggunakan Thread yang berbeda maka kita dapat

menjalankan proses lain selagi proses sebelumnya berjalan. Klik ganda button Stop Load dan ketikkan sintaks dibawah ini. if (backgroundworker1.workersupportscancellation) backgroundworker1.cancelasync(); Pada saat kita menambahkan control BackgroundWorker pada form kita telah mengganti properties BackgroundWorker (WorkerReportsProgress dan WorkerSupportsCancellation). Karena sebelumnya WorkerSupportsCancellation telah kita ubah menjadi true, maka BackgroundWorker ini dapat melakukan pembatan proses yang telah dijalankan dengan menggunakan sintaks ini backgroundworker1.cancelasync(); Jalankan Program, lalu klik button Load, sedangkan untuk membatalkan klik button Stop. Pada saat proses berjalan.

Pada saat proses selesai Pada saat pembatalan proses.

Penutup Pada artikel ini telah dijelaskan bagaimana menggunakan BackgroundWorker pada sebuah aplikasi. Sedangkan untuk memudahkan dalam memahami isi artikel, maka penulis juga menyertakan dengan full source code project latihan ini, dan dapat di download disini http://junindar.blogspot.co.id/2016/12/backgroundworker-pada-windows-aplikasi.html

Referensi 1. www.msdn.microsoft.com 2. www.planetsourcecode.com 3. www.codeproject.com 4. www.aspnet.com Masih banyak lagi referensi yang ada di Intenet. Anda tinggal cari di www.google.com. Dengan kata kunci tutorial VB.Net Biografi Penulis. Junindar Lahir di Tanjung Pinang, 21 Juni 1982. Menyelesaikan Program S1 pada jurusan Teknik Informatika di Sekolah Tinggi Sains dan Teknologi Indonesia (ST-INTEN-Bandung). Junindar mendapatkan Award Microsoft MVP VB pertanggal 1 oktober 2009 hingga saat ini. Senang mengutak-atik computer yang berkaitan dengan bahasa pemrograman. Keahlian, sedikit mengerti beberapa bahasa pemrograman seperti : VB.Net, C#, SharePoint, ASP.NET, VBA. Reporting: Crystal Report dan Report Builder. Database: MS Access, MY SQL dan SQL Server. Simulation / Modeling Packages: Visio Enterprise, Rational Rose dan Power Designer. Dan senang bermain gitar, karena untuk bisa menjadi pemain gitar dan seorang programmer sama-sama membutuhkan seni. Pada saat ini bekerja di salah satu Perusahaan Consulting dan Project Management di Malaysia sebagai Senior Consultant. Memiliki beberapa sertifikasi dari Microsoft yaitu Microsoft Certified Professional Developer (MCPD SharePoint 2010), MOS (Microsoft Office Specialist) dan MCT (Microsoft Certified Trainer) Mempunyai moto hidup: Jauh lebih baik menjadi Orang Bodoh yang giat belajar, dari pada orang Pintar yang tidak pernah mengimplementasikan ilmunya.