私はC#asyncについて混乱しています。私は、並列タスク処理のために非同期を理解します。たとえば、メソッドがAとBのタスクを実行し、の非同期を使用すると、AとBは同時にアクションを実行できます。 BはAが完了するまで待つ必要はありません。ASP.NETとC#async
ただし、以下のコード例では、データベースからデータを取得するタスクは1つのみです。つまり、パラレルタスクには何もありません。しかし、それはなぜ非同期を使用していますか?
非同期を理解できるようにアドバイスをお願いします。
[ResponseType(typeof(BookDetailDTO))]
public async Task<IHttpActionResult> GetBook(int id)
{
var book = await db.Books.Include(b => b.Author).Select(b =>
new BookDetailDTO()
{
Id = b.Id,
Title = b.Title,
Year = b.Year,
Price = b.Price,
AuthorName = b.Author.Name,
Genre = b.Genre
}).SingleOrDefaultAsync(b => b.Id == id);
if (book == null)
{
return NotFound();
}
return Ok(book);
}
https://msdn.microsoft.com/en-us/library/mt674882.aspx – Crowcoder
これは最高の記事/説明、特に「スレッド」セクションです。あなたが誤解したことを明確にしています。 –
「asyncは、AとBが同じ時間にアクションを実行できるようにする」ためのレコードです。 *正しい*ではありません。ほとんどの場合、同じ*時間ではありません。より良い方法は、「非同期/待ち時間は、複雑なコードを書くことなくBの結果を待つ間に、プログラムをAにすることを容易にするsynctacticな砂糖」と考えることです。 – mayu