Bisa di posting apa isi dari:
"//Lakukan hal lain tanpa terpengaruh Proses diatas" ?
Jika dari class/UI/form lain anda hanya memanggil
AsyncHitungVokal(), ngga akan ngefek, karena pooling pada loop
while (!iar.IsCompleted) {...} akan menghabiskan
waktu CPU anda selama "menghitung vokal" belum selesai.
Sebagai contoh, coba ditambahkan System.Threading.Sleep(1)
atau kalau GUI app, Application.DoEvents() didalam loop tersebut.
Ini akan memberi kesempatan pada applikasi untuk mengerjakan
hal lain pada timeslot tsb.
Kalau ingin memaksimalkan async method, coba pakai callback
yang akan dieksekusi apabila async method selesai mengerjakan
tugasnya. Jadi anda ngga perlu pooling. Contohnya ada di:
http://msdn.microsoft.com/en-us/library/2e08f6yc.aspx
Selain itu coba perdalam konsep Threading di C#, karena ini
sangat erat kaitannya dengan multithreading.
Mungkin bisa lihat2: http://www.albahari.com/threading/
salam,
putu
2011/7/20 Yakin Zure <[email protected]>:
> Mau nanya nih, apa sih keuntungan menggunakan Asynchronous Method ketimbang
> yang gak make? dan Bagaimana caranya misalnya kita memproses sesuatu yang
> lama prosesnya, misalnya menghitung huruf konsonan pada sebuah kalimat yang
> panjang, trus bisa tidak disaat proses menghitung tersebut kita jalankan
> proses yg lain tanpa terbebani oleh proses perhitungan huruf konsonan tsb?
> saya dah nyoba pake Async tapi kok gak ngefek ya?
> Misalnya codingnya seperti ini :
> ======================================================
> delegate int AsyncProsesHitung();
> public int AsyncHitungVokal()
> {
> AsyncProsesHitung AsyncVokal = new
> AsyncProsesHitung(HitungVokal);
> IAsyncResult iar = AsyncVokal.BeginInvoke(null, null);
>
> while (!iar.IsCompleted)
> {
> //Lakukan hal lain tanpa terpengaruh Proses diatas
> }
> int Hasil = AsyncVokal.EndInvoke(iar);
> return Hasil;
> }
>
> public int HitungVokal()
> {
> int jmlVokal = 0;
>
> for (int i = 1; i <= this.Content.Characters.Count; i++)
> {
> if (this.Content.Characters[i].Text.ToLower() == "a" ||
> this.Content.Characters[i].Text.ToLower() == "i" ||
> this.Content.Characters[i].Text.ToLower() == "u" ||
> this.Content.Characters[i].Text.ToLower() == "e" ||
> this.Content.Characters[i].Text.ToLower() == "o")
> {
> jmlVokal++;
> }
> }
> return jmlVokal;
> }
> =============================================
>
>
>
>
>
> _______________________________________________
> To unsubscribe from this group, send an email to:
> [email protected]
> Get Free 5 GB mailbox Check this http://www.mugi.or.id
>
> Powered by bisnismedia.com
>
_______________________________________________
To unsubscribe from this group, send an email to:
[email protected]
Get Free 5 GB mailbox Check this http://www.mugi.or.id
Powered by bisnismedia.com