New VB 11 Async Modifier and Await Operator

Posted at : Jun/20/2012
4972 Views | 0 Comments

Salah satu fitur baru di VB 11 yang cukup berguna yaitu Async modifier dan Await operator. Fitur tersebut digunakan untuk mempermudah penulisan kode yang bersifat asynchronous. Pada versi .net sebelumnya untuk menuliskan kode asynchronous kita harus membuat sebuah callback method dimana callback method tersebut akan dijalankan setelah proses asynchronous tersebut selesai. Teknik tersebut memiliki sedikit kekurangan dalam hal kesulitan untuk mengatur flow control kode program yang berisi pemanggilan ke asynchronous method.

Dengan fitur baru tersebut seolah-olah kita diberikan kemudahan untuk menuliskan kode asynchronous secara synchronous. Programmer tidak perlu lagi menuliskan callback method secara eksplisit, .net clr yang akan bertugas untuk membuat callback method tersebut pada saat runtime.

Async modifier dapat di implementasikan dalam sebuah method (sub atau function) atau lambda expression. Sub yang digunakan dapat berupa sebuah event handler. Eksekusi method async akan menghasilkan tipe data Task, dimana Task tersebut dapat berupa Task atau Task(Of TResult). Penggunaan Task dilakukan apabila kita tidak concerned terhadap hasil yang diberikan oleh method tersebut. Anda dapat membayangkan Task tersebut seperti Task dari sebuah Sub.

Await operator harus diimplementasikan dalam sebuah Async method. Pada saat operator tersebut dijalankan maka clr akan membuat sebuah resume point dengan memberhentikan proses tersebut secara sementara sampai proses selesai. Pada saat terjadi pemberhentian proses, clr akan kembali menjalankan kode selanjutnya yang terdapat dalam method pemanggil (caller method). Apabila di dalam sebuah Async method tidak terdapat pemanggilan Await maka method tersebut akan dijalankan secara synchronous. Begitu juga Visual Studio akan memberikan warning apabila pemanggilan Await dilakukan didalam sebuah method yang tidak menggunakan Async modifier.

Untuk lebih jelasnya saya akan memberikan sebuah contoh penggunaan fitur baru tersebut. Skenarionya yaitu webform didalam asp.net akan membaca sebuah file rss yang berada di site yang berbeda. Pembacaan rss file tersebut dilakukan secara asynchronous dengan menggunakan dua pendekatan yaitu, Async modifier yang dimplementasikan dalam sebuah Sub dan dalam sebuah Function yang mengembalikan Task(Of TResult).

Diasumsikan terdapat sebuah asp.net 4.5 web site dengan satu webform dan dua kontrol GridView dan dua button. Tambahkan atribut berikut ini di page directive (perhatikan kode yang diberi border merah) :

Tambahkan sebuah class berikut ini kedalam project tersebut :

Public Class RSSFeed
    Public Property Title As String
    Public Property Link As String
    Public Property PubDate As String
End Class

ketikkan kode dibawah ini :

Perhatikan keyword yang di beri gambar berwarna merah. Async modifier tersebut di implementasikan dalam sebuah Sub dan penggunaan Await operator pada saat pemanggilan prosedur yang sifatnya asynchronous. Secara naming convention bahwa penamaan asynchronous method menggunakan akhiran Async untuk mempermudah membaca sebuah prosedur. Dari kode tersebut diatas kita tidak lagi melihat secara eksplisit callback method, dengan kata lain penulisan kode program asynchronous dapat dibangun dengan “rasa synchronous” Smile. Untuk memanggilnya cukup ketikkan kode berikut ini :

Protected Sub btnRead1_Click(sender As Object,
                                 e As EventArgs) Handles btnRead1.Click
        Try
            ReadRSSFeed1Async()
        Catch ex As Exception
            lblInfo.Text = ex.Message
        End Try
End Sub

hasilnya akan tampak seperti pada gambar dibawah ini :

Contoh berikutnya yaitu penggunaan Async modifier dalam sebuah fungsi yang akan mengembalikan data berupa Task(Of TResult) dimana hasil dari eksekusi fungsi tersebut akan digunakan menjadi sumber data untuk kontrol GridView. Ketikkan kode berikut ini di webform yang sama :

Perhatikan penggunaan Async modifier, Await operator dan return value yang dikembalikan oleh fungsi tersebut berupa Task(Of List (Of RSSFeed)). Untuk memanggil fungsi tersebut ketikkan kode berikut ini :

Bandingkan dengan kode pemanggilan prosedur sebelumnya, apakah anda melihat ada beberapa perbedaan? Hasilnya akan tampak sama dengan yang sebelumnya :


[Comments]


[Write your comment]

Name (required)

Email (required-will not published)

 
Comment
AUXE
Input code above below (Case Sensitive) :

ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Founder & IT Trainer Native Enterprise | MCT (2008-2019) | MVP (2009-2016) | Xamarin Certified Professional | MTA | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.

[Read More...]

TOP DOWNLOAD

Mapping Hak Akses User Pada MenuStrip Sampai Control Button
downloaded 6982 times

Bagaimana caranya menginstal database ketika deploying sebuah aplikasi?
downloaded 4893 times

Simple Voice Engine Application With Sound Player Class...
downloaded 4045 times

Change Group,Sort Order, Filtering By Date in Crystal Reports
downloaded 3460 times

WinForms DataGrid Paging With SqlDataAdapter
downloaded 2881 times


LINKS

CERTIFICATIONS

Xamarin Certified
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  Facebook  Instagram  LinkedIn   Twitter

RSS


NATIVE ENTERPRISE NEWS

© Copyright 2006 - 2024   Rully Yulian MF   All rights reserved.