En este artículo de MSDN , se proporciona el siguiente código de ejemplo (ligeramente editado por brevedad):
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);
}
El FindAsync
método recupera un Department
objeto por su ID y devuelve a Task<Department>
. Luego, el departamento se verifica de inmediato para ver si es nulo. Según tengo entendido, pedir el valor de la Tarea de esta manera bloqueará la ejecución del código hasta que se devuelva el valor del método esperado, haciendo de esta una llamada síncrona.
¿Por qué harías esto? ¿No sería más simple simplemente llamar al método síncrono Find(id)
, si vas a bloquear inmediatamente de todos modos?
... else return null;
Luego, deberá verificar que el método realmente encontró el departamento que solicitó.