Loading Data using async/await in C# 5.0


Async และAwait เป็นฟีเจอร์ใหม่ที่มาใน C# 5.0
ช่วยให้คุณสามารถเพิ่มประสิทธิภาพการตอบสนองของหน้าจอโปรแกรม
เช่น ในตอนการโหลด ข้อมูลจากฐานข้อมูล หน้าจอจะค้างไปในช่วงกำลังโหลดข้อมูล

คุณสามารถใช้ Async และAwait เข้าช่วย ดังตัวอย่าง ดังนี้

 

ขั้นตอนการพัฒนาโปรแกรม

  • ติดตั้ง EntityFramework 5.0
  • สร้างโปรเจ็กต์
  • ออกแบบหน้าจอ
  • เพิ่มไอเทม EF5.0
  • การเขียนโค้ด

 

ติดตั้ง EntityFramework 5.0

1. การติดตั้ง EntityFramework 5.0 (EF 5.0) ใช้คำสั่งดังนี้ (http://nuget.org/packages/entityframework  )

image

 

2. Copy คำสั่งไปรันใน Package Manager Console (PM)

image

 

3. วางคำสั่ง แล้ว Enter เพื่อติดตั้ง EF5.0

image

 

สร้างโปรเจ็กต์

4. เมื่อติดตั้ง EF แล้ว สร้างโปรเจ็กต์ (WPF)

image

 

ออกแบบหน้าจอ

5.หน้าจอโซลูชั่น                                                                   ออกแบบ หน้า โดยแบ่งหน้าจอเป็น สองแถว

imageimage

 

6.ลากคอนโทรล DataGrid วางบน แถวแรก                 Reset layout เป็นเต็มจอ

imageimage

 

7. ลากคอนโทรล ProgressBar และ Button วางในแถวที่ 2          

image

 

8.ปลดล็อก Button ด้านซ้าย(เรา) ปรับ ขยับ ให้เหมาะสม, ตั้งชื่อและป้ายชื่อ

imageimage

 

เพิ่มไอเทม EF5.0

9.เพิ่มไอเทม EF5.0
โดยคลิกขวา => Add = New Item…                             พิมพ์ช่องค้นหา = Entity แล้วเลือก ADO.NET…=> คลิก OK

imageimage

 

10. เลือกสร้างโมเดล จากฐานข้อมูล

imageimage

 

11.เลือกตารางฐานข้อมูล

imageimage

 

 

การเขียนโค้ด

12. เสร็จแล้วเขียนโค้ด…

ถ้าคุณเขียนโค้ดแบบเดิม ดังนี้..

image

 

13. เมื่อรันโปรแกรม แล้วกดปุ่ม Load หน้าจอ จะค้างนิ่ง ไปชั่วครู่ จนโหลด ข้อมูลเสร็จเรียบร้อย
จึงกลับมาตอบสนอง ตามปกติ (สังเกตุ) ProgressBar เริ่มวิ่ง เมื่อโหลดข้อมูลเป็นที่เรียบร้อยแล้ว
ซึ่งไม่มีประโยชน์ อะไร?…ดูต่อ

imageimage

 

14. ไปเขียนโค้ดแบบใหม่ โดยใช้ async และ await ซึ่งเป็นฟีเจอร์ใหม่ ใน C# 5.0
โดย Recfactor Code เมื่อครู่ เป็นอีกหนึ่งเมธอด ดัวนี้
ไฮไลท์โค้ดทั้งหมด => คลิกขวา => เลือก Extract Method…

image

 

15. ตั้งชื่อเมธอดเป็น LoadData แล้วกด OK

image

 

16. เพิ่ม modifier async หน้าเมธอด LoadData()

image

 

17. เขียนโค้ดดังนี้

image
ปล. บรรทัด System.Threading.Thread.Sleep(TimeSpan.FromSeconds(5)); เพื่อหน่วงเวลา 5 วินา
เพื่อให้เห็นภาพ ว่าหน้าจอไม่ค้าง เนื่องจาก ข้อมูลตัวอย่างมีน้อย ใช้เวลาโหลดไม่มาก

 

18. ทำการรันโปรแกรมใหม่
แล้วกดปุ่ม Load ตอนนี้ หน้าจอ ไม่ค้าง แล้ว
ProgressBar วิ่ง หลอกตา ผู้ใช้
ไม่ให้รู้สึกว่า รอนานเกินไป                                              เมื่อโหลดข้อมูลเรียบร้อย ProgressBar หยุดทำงาน

imageimage

 

The end.

 


ผู้เขียน

clip_image019

นุชิต อรรจนวรรจน์
Software Development Section Manager
บ.โฟลว์โก้ จำกัด

Microsoft MVP: https://mvp.support.microsoft.com/profile/nuchit,
GF Community Leader(nano): http://greatfriends.biz/,
Blog: http://bit.ly/JANAWAT,
Facebook: nuchit, Twitter: @janawat

เกี่ยวกับ

Nuchit Atjanawat is a Microsoft MVP, GreatFriends Community Leader, WindowsITPro Columnist(Mr.Nano), Silverlight Business Application Instructor, Speaker in various Microsoft events, Author, passionate Blogger and a Software Engineer by profession. He has a very good skill over Silverlight, LightSwitch, C#, XAML & Blend. He shares his technical findings, tutorials in his technical blog. Follow his Blog and Facebook page to be updated on latest articles. - Technical Blog: https://janawat.wordpress.com - WindowsITPro Columnist(Mr.Nano): http://windowsitpro.net - The GreatFriends.Biz Community Discussion Board (nano): http://greatfriends.biz - witter: https://twitter.com/janawat - Facebook Page: https://www.facebook.com/nuchit - Instructor: http://bit.ly/GF250-01, http://bit.ly/GF150-02

Tagged with:
เขียนใน C# 5

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

In Archive
%d bloggers like this: