我有一个 EF Core 程序。
代码
class EagerLoading
{
public async void load()
{
Console.WriteLine("a");
var teams = await loadTeamsAsync();
Console.WriteLine("c");
}
public async Task<List<Team>> loadTeamsAsync()
{
Console.WriteLine("b");
using (var context = new SchoolContext())
{
return await context.teams.
ToListAsync();
}
}
}
//Entry method
static void Main(string[] args)
{
new EagerLoading().load();
}
输出
a
b
预期结果
a
b
c
问题
我错在哪里?为什么 Console.WriteLine("c");
不执行?
context.teams.ToListAsync()
调用之后放置一个Console.WriteLine
,它会被调用吗?据我所知,您的请求仍未返回。 - JRenoload
是一个异步的 void 方法。由于你的例子,不建议使用异步 void 方法。你有一个同步的主方法,你正在调用一个异步 void 方法,但在幕后有一个异步操作,在主方法完成后才会完成。 - Amir Popovich