V.W*_*.Wu 3 c# async-await .net-core ef-core-3.1
我有一个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();
}
Run Code Online (Sandbox Code Playgroud)
输出
a
b
Run Code Online (Sandbox Code Playgroud)
预期的
a
b
c
Run Code Online (Sandbox Code Playgroud)
我错在哪里?为什么Console.WriteLine("c");不执行?
您需要ReadKey在Main方法中放置 a或类似内容以阻止应用程序退出。
Load是一个async void(应该敲响警钟)并且在未观察到的情况下运行,反过来应用程序很有可能在它以您期望的方式完成之前退出(或者在这种情况下写入控制台)。
static void Main(string[] args)
{
new EagerLoading().load();
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
注意:您应该只在事件处理程序(或逻辑上表示事件处理程序的构造)上使用异步 void,这或多或少是它们存在的主要原因。
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |