私は次のコードを持っていますが、マルチスレッド化の概念を高レベルで確実に理解したいだけです。
public async Task<List<Category>> GetProjectsByCategoryIDAsync(Int16 categoryid)
{
try
{
using (YeagerTechEntities DbContext = new YeagerTechEntities())
{
DbContext.Configuration.ProxyCreationEnabled = false;
DbContext.Database.Connection.Open();
var category = await DbContext.Categories.Include("Projects").Where(p => p.CategoryID == categoryid).ToListAsync();
return category;
}
}
catch (Exception)
{
throw;
}
}
それは以下の私の理解です:
- async - 同期ではなく非同期で実行するメソッドを宣言します。
- Task - 単一スレッドでタスクとして実行するメソッドを宣言します
- await - タスクは操作が完了するまで待機します。
私が少し曖昧なのは、 await キーワードです。明らかに、非同期プログラミングの利点は、別の要求がすぐ後ろに来る前に、メソッドがタスクの完了を待つ必要がないことです。ただし、await キーワードを使用すると、タスクは操作が完了するまで待機します。
同期プログラミングでは、すべてが順次パターンで処理されます。
この方法論では、どのようにして要求が同時に入ってきて、同期プログラミングよりもはるかに高速に実行できるのでしょうか??
概念を理解するには、高レベルの説明が必要です。
よろしくお願いします。