In questo articolo MSDN , viene fornito il seguente codice di esempio (leggermente modificato per brevità):
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);
}
Il FindAsync
metodo recupera un Department
oggetto in base al suo ID e restituisce a Task<Department>
. Quindi il dipartimento viene immediatamente controllato per vedere se è nullo. A quanto ho capito, chiedere il valore dell'attività in questo modo bloccherà l'esecuzione del codice fino a quando non verrà restituito il valore dal metodo atteso, rendendolo effettivamente una chiamata sincrona.
Perché mai lo faresti? Non sarebbe più semplice chiamare il metodo sincrono Find(id)
, se hai intenzione di bloccare immediatamente comunque?
... else return null;
Quindi dovrai verificare che il metodo abbia effettivamente trovato il dipartimento che hai richiesto.