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);
}
FindAsyncSposób pobiera Departmentprzedmiotu 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ł.