当我们启动多个异步实体框架查询并并行运行时会发生什么?
他们是否并行执行?它们是否由实体框架序列化?这不受支持吗?它会导致异常吗?
public async Task QueryDatabase()
{
using (var context = new MyDbContext())
{
Task task1 = context.SomeTable1.ToListAsync();
Task task2 = context.SomeTable2.ToListAsync();
await Task.WhenAll(task1, task2);
}
}
Run Code Online (Sandbox Code Playgroud) public async Task<string> GetName(int id)
{
Task<string> nameTask =
Task.Factory.StartNew(() => { return string.Format("Name matching id {0} = Developer", id); });
return nameTask.Result;
}
Run Code Online (Sandbox Code Playgroud)
在上面的方法return语句我使用Task.Result属性.
public async Task<string> GetName(int id)
{
Task<string> nameTask =
Task.Factory.StartNew(() => { return string.Format("Name matching id {0} = Developer", id); });
return await nameTask;
}
Run Code Online (Sandbox Code Playgroud)
我在这里使用等待任务.如果我认为await将释放调用线程但是Task.Result将阻止它,我会不会错,它会是正确的吗?