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 metodo FindAsync
recupera un oggetto Department
dal suo ID e restituisce un Task<Department>
. Quindi il dipartimento è immediatamente controllato per vedere se è nullo. A quanto ho capito, chiedendo il valore del Task in questo modo, blocca l'esecuzione del codice fino a quando viene restituito il valore del metodo atteso, rendendo effettivamente questa una chiamata sincrona.
Perché mai dovresti farlo? Non sarebbe più semplice chiamare il metodo sincrono Find(id)
, se hai intenzione di bloccare immediatamente comunque?