ในบทความ MSDN นี้มีการให้รหัสตัวอย่างต่อไปนี้ (แก้ไขเล็กน้อยเพื่อความกะทัดรัด):
public async Task<ActionResult> Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Department department = await db.Departments.FindAsync(id);
if (department == null)
{
return HttpNotFound();
}
return View(department);
}
FindAsync
วิธีการดึงDepartment
วัตถุโดยใช้ ID Task<Department>
ของตนและผลตอบแทน จากนั้นแผนกจะถูกตรวจสอบทันทีเพื่อดูว่าเป็นโมฆะหรือไม่ ตามที่ฉันเข้าใจแล้วการขอค่าของภารกิจในลักษณะนี้จะบล็อกการเรียกใช้โค้ดจนกว่าจะส่งคืนค่าจากเมธอดที่รอคอยซึ่งส่งคืนการโทรแบบซิงโครนัสอย่างมีประสิทธิภาพ
ทำไมคุณถึงทำเช่นนี้? มันจะง่ายกว่าFind(id)
ไหมถ้าจะเรียกวิธีการซิงโครนัสถ้าคุณจะบล็อกทันทีล่ะ?
... else return null;
จากนั้นคุณจะต้องตรวจสอบว่าวิธีการที่พบจริงแผนกที่คุณขอ