当我使用 ToListAsync 方法时线程不起作用
a thread doesn't work when I use ToListAsync method
我有一个 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");
不执行?
您需要在 Main
方法中放置一个 ReadKey
或类似的方法来阻止应用程序 退出 。
Load
是一个async void
(应该是敲响了警钟)并且运行unobserved,反过来申请的概率很高exiting 在它以您期望的方式完成之前(或者在这种情况下写入 console)。
static void Main(string[] args)
{
new EagerLoading().load();
Console.ReadKey();
}
注意 :你应该只在事件处理程序(或逻辑上代表事件处理程序的构造)上使用 on async voids,它是或多或少是它们存在的主要原因.
我有一个 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");
不执行?
您需要在 Main
方法中放置一个 ReadKey
或类似的方法来阻止应用程序 退出 。
Load
是一个async void
(应该是敲响了警钟)并且运行unobserved,反过来申请的概率很高exiting 在它以您期望的方式完成之前(或者在这种情况下写入 console)。
static void Main(string[] args)
{
new EagerLoading().load();
Console.ReadKey();
}
注意 :你应该只在事件处理程序(或逻辑上代表事件处理程序的构造)上使用 on async voids,它是或多或少是它们存在的主要原因.