C# 비동기에 대해 혼동스러워합니다. 나는 병렬 작업 처리를 위해 비동기을 이해한다. 예를 들어 메소드가 A 및 B 태스크를 수행하고 비동기을 사용하면 A 및 B가 동시에 조치를 수행 할 수 있습니다. B는 A가 완료 될 때까지 기다릴 필요가 없습니다.ASP.NET 및 C# async
그러나 아래 예제 코드는 데이터베이스에서 데이터를 가져 오는 단일 작업 만 수행합니다. 즉, 병렬 작업에는 아무 것도 없습니다. 그런데 왜 비동기을 사용합니까?
비동기을 이해할 수 있도록 조언을주십시오.
[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가 동시에 작업을 수행 할 수 있습니다." * 정확하지 않습니다. 대부분의 경우 같은 시간에 * 아닙니다. 더 나은 방법은 "async/awaits는 복잡한 코드를 작성하지 않고 B의 결과를 기다리는 동안 프로그램을 쉽게 만들 수있는 환상적인 설탕"이라고 생각하는 것입니다. – mayu