W tym artykule MSDN znajduje się następujący przykładowy kod (lekko zredagowany dla zwięzłości):
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
Sposób pobiera Department
przedmiotu jego identyfikatora, i zwraca Task<Department>
. Następnie dział jest natychmiast sprawdzany, aby sprawdzić, czy jest pusty. Jak rozumiem, zapytanie o wartość Zadania w ten sposób zablokuje wykonanie kodu, dopóki wartość z oczekiwanej metody nie zostanie zwrócona, co skutecznie spowoduje wywołanie synchroniczne.
Dlaczego miałbyś to robić? Czy nie byłoby łatwiej po prostu wywołać metodę synchroniczną Find(id)
, jeśli i tak zamierzasz natychmiast zablokować?
... else return null;
Następnie musisz sprawdzić, czy metoda rzeczywiście znalazła żądany dział.