Dans cet article MSDN , l'exemple de code suivant est fourni (légèrement modifié par souci de concision):
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);
}
La FindAsync
méthode récupère un Department
objet par son ID et renvoie a Task<Department>
. Ensuite, le département est immédiatement vérifié pour voir s'il est nul. Si je comprends bien, demander la valeur de la tâche de cette manière bloquera l'exécution du code jusqu'à ce que la valeur de la méthode attendue soit renvoyée, ce qui en fait un appel synchrone.
Pourquoi voudriez-vous faire ça? Ne serait-il pas plus simple d'appeler simplement la méthode synchrone Find(id)
, si vous voulez bloquer immédiatement de toute façon?
... else return null;
Ensuite, vous devez vérifier que la méthode a effectivement trouvé le service que vous avez demandé.