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