在本文中,提供了以下示例代码(为简便起见,对其进行了略作编辑):
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
方法Department
通过其ID 检索对象,并返回Task<Department>
。然后立即检查部门以查看其是否为空。据我了解,以这种方式要求Task的值将阻止代码执行,直到返回了来自waited方法的值,从而有效地使它成为同步调用。
你为什么要这样做?Find(id)
如果您要立即阻止,仅调用sync方法不是更简单吗?
... else return null;
然后,您需要检查该方法是否确实找到了您要的部门。