我有以下代码,只是想确保我有一个高层次的多线程概念。
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 关键字,任务会一直等到操作完成。
使用同步编程,一切都以顺序模式处理。
这种方法如何允许请求同时进入并以比同步编程更快的方式执行?
我只需要一个高层次的解释来理解这个概念。
提前非常感谢。