“计划并等待运行”的任务未运行

时间:2018-09-24 20:45:38

标签: .net asp.net-mvc async-await

我有一个.net Framework 4.6.1 aspnet MVC应用程序,该应用程序在更新许多Nuget程序包之前一直可以使用。我已经退出了大多数关键软件包,但该问题尚未解决。基本上,当我的应用程序挂起时,我可以看到对GetListAsync的调用,并且永远不会返回。这是对使用Dapper ORM的SQL Server的调用,我已经回到已知的良好版本,但这不能解决问题。查看任务列表,在我看来,我有7个正在等待执行的任务和5个已准备好运行的任务,但是由于某种原因,它们没有被安排。看着我的工作者ThreadPool,我可以看到我有很多可用的线程,实际上,只要我在dev中启动aspnet应用程序,并且除了第一个请求外,该应用程序的负载为零,就会重现此问题。有什么想法为什么我会有许多计划任务,即使我等了很长时间也似乎从未被接受?

enter image description here

1 个答案:

答案 0 :(得分:0)

当我有一个UI线程时遇到这种情况

while (true)
{
   var message = await Console.In.ReadLineAsync();
   //some message processing
}

和一些其他异步方法已被调用而无需等待。 我用两种方法解决了这个问题:

将所有异步void替换为异步Task并等待所有异步方法。但这无法解决阻塞UI线程的问题

然后运行

    await Task.Run(async () =>
    {
        while (true)
        {
            var message = await Console.In.ReadLineAsync();
           //some message processing
        }
    }

在另一个线程中。