В этой статье MSDN приведен следующий пример кода (слегка отредактированный для краткости):
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>
. Затем отдел немедленно проверяется, чтобы узнать, является ли он нулевым. Насколько я понимаю, запрос значения задачи таким образом будет блокировать выполнение кода до тех пор, пока не будет возвращено значение ожидаемого метода, что фактически делает это синхронным вызовом.
Зачем тебе это делать? Не проще ли будет просто вызвать синхронный метод Find(id)
, если вы все равно собираетесь немедленно заблокировать?
... else return null;
Затем вам нужно проверить, что метод действительно нашел тот отдел, о котором вы просили.