で、この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>
。次に、部門がすぐにチェックされ、nullかどうかが確認されます。私が理解しているように、この方法でタスクの値を要求すると、待機中のメソッドから値が返されるまでコード実行がブロックされ、事実上これが同期呼び出しになります。
なぜこれをするのですか?Find(id)
とにかくすぐにブロックする場合は、単に同期メソッドを呼び出す方が簡単ではありませんか?
... else return null;
次に、メソッドが要求した部門を実際に見つけたことを確認する必要があります。