c# .net core linq to entities 异步调用终止程序

c# .net core linq to entities async call terminates program

在 .Net 核心中,我有一个查询并希望获得异步结果,但程序只是终止而没有任何错误。

代码是这样的:

var query = from row in context.MyTable 
            where something == row.something 
            select row;
var list = await query.ToListAsync();

如果我执行 FirstAsync,程序也会终止,但如果我执行 First() 或 ToList(),它运行正常。

我有许多其他查询都表现良好,我认为终止是相当残酷的,但我找不到任何其他经历过它的人。

我该如何解决? (目前我只使用 ToList)

因为 Main 函数总是同步的,你的顶级任务应该同步等待:

void Main()
{
    var serviceTask = StartServiceAsync();

    // you cannot do await serviceTask, but only
    serviceTask.Wait();
}

所以您的服务可能不会失败 - 它只是在 Main func 结束并且应用程序关闭时终止。