Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การเรียกเมธอดแบบ Asynchronous ใน C#

Asynchronous programming ใน C# เป็นวิธีที่มีประสิทธิภาพสำหรับกิจกรรมที่ถูกบล็อกหรือล่าช้า หากกิจกรรมถูกบล็อกในกระบวนการ synchronous แอปพลิเคชันทั้งหมดต้องรอ ใช้เวลานาน แอปหยุดตอบสนอง ด้วย asynchronous approach แอปทำงานอื่นต่อไปได้

แอปที่มี GUI ตรวจสอบคิว หากมีงานที่ยังไม่ประมวลผล จะดึงออกมาทำก่อน โค้ดทำงาน synchronous งานที่ยังไม่เสร็จจะเสร็จก่อน แอปจะแสดง "stop responding" ถ้าประมวลผลนานเกินไป

ตัวอย่างปัญหา

private void OnRequestDownload(object sender, RoutedEventArgs e) { 
    var req = HttpWebRequest.Create(_requestedUri); 
    var res = req.GetResponse(); 
}

แก้ไขด้วย async/await

private async void OnRequestDownload(object sender, RoutedEventArgs e) { 
    var req = HttpWebRequest.Create(_requestedUri); 
    var res = await req.GetResponseAsync(); 
}