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 FindAsyncmetodo recupera un Departmentoggetto 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.