【发布时间】:2020-03-04 05:47:26
【问题描述】:
我有一个 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,它会被调用吗?据我所知,您的请求仍未被退回 -
load是一个异步 void 方法。由于您的示例,不建议完全使用 async void 方法。您有一个同步主方法,您正在调用一个异步 void 方法,但在幕后有一个异步操作在主方法完成后完成。 -
你的代码在 Main 方法中需要 ReadKey()
标签: c# .net-core async-await ef-core-3.1