Dalam artikel MSDN ini , kode contoh berikut disediakan (sedikit diedit untuk singkatnya):
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);
}
The FindAsync
Metode mengambil sebuah Department
objek dengan ID-nya, dan mengembalikan Task<Department>
. Kemudian departemen segera diperiksa untuk melihat apakah itu nol. Seperti yang saya pahami, meminta nilai Task dengan cara ini akan memblokir eksekusi kode hingga nilai dari metode yang ditunggu dikembalikan, secara efektif menjadikan ini panggilan sinkron.
Mengapa kamu melakukan ini? Bukankah lebih mudah untuk hanya memanggil metode sinkron Find(id)
, jika Anda akan segera memblokirnya?
... else return null;
Maka Anda perlu memeriksa bahwa metode tersebut benar-benar menemukan departemen yang Anda minta.