In diesem MSDN-Artikel wird der folgende Beispielcode bereitgestellt (der Kürze halber leicht bearbeitet):
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);
}
Die FindAsync
Methode ruft ein Department
Objekt anhand seiner ID ab und gibt a zurück Task<Department>
. Dann wird die Abteilung sofort überprüft, um festzustellen, ob sie null ist. Soweit ich weiß, wird die Abfrage des Task-Werts auf diese Weise die Codeausführung blockieren, bis der Wert der erwarteten Methode zurückgegeben wird, wodurch dies effektiv zu einem synchronen Aufruf wird.
Warum würdest du das jemals tun? Wäre es nicht einfacher, nur die synchrone Methode aufzurufen Find(id)
, wenn Sie trotzdem sofort blockieren würden?
... else return null;
Dann müssten Sie überprüfen, ob die Methode tatsächlich die von Ihnen gewünschte Abteilung gefunden hat.