【问题标题】:Tasks Which are "Scheduled and waiting to run" Are Not Running“计划并等待运行”的任务未运行
【发布时间】:2019-02-28 10:10:43
【问题描述】:

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

【问题讨论】:

  • 你需要显示相关代码
  • 我将尝试提取相关代码 - 或者至少是我看到的挂起的代码。但是不清楚为什么如果 Tasks 基础设施没有安排任务运行,代码会有所帮助,但这可能是我缺乏知识,无法连接这些点。

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


【解决方案1】:

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

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

还有一些其他异步方法在没有等待的情况下被调用。 我用两种方法解决了这个问题:

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

然后运行

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

在另一个线程中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多