代码之家  ›  专栏  ›  技术社区  ›  Matt Welke

如何在ASP上的请求结束时启动后台作业。净核心?

  •  1
  • Matt Welke  · 技术社区  · 7 年前

    我现有的web开发知识主要是Node。我正在探索ASP。NET Core现在有一件事让我有点困惑,那就是如何在action方法的末尾开始一项后台工作。

    例如,在Node中,我可能会使用一个函数,该函数立即返回,但会传递回调用以记录请求。可以在日志记录开始时将响应发送给用户。

    我不想让用户因为每个请求都需要的后台工作而慢下来。我将如何在ASP中执行此操作。净核心?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Hypenate    7 年前

    我创建了一个API。
    它开始,向用户显示我的IEnumerable字符串。 当页面已经加载时,调试器会继续输出“仍在此处运行”。
    这很有效,因为我从不等待任务或询问结果。

    [HttpGet]
    public IEnumerable<string> Get()
    {
        Task task = new Task(() =>
        {
            for (int i = 0; i < 5000; i++)
            {
                System.Threading.Thread.Sleep(2000);
                Debug.WriteLine("Still running here...");
            }
        });
    
        task.Start();
    
        return new string[] { "value1", "value2" };
    }