C# ASP.NET Core 即发即忘

The*_*tin 10 c# asynchronous asp.net-core

我有一个同步控制器方法

    public IActionResult Action(int num)
    {
        //operations-1

        Task.Run(() => DoWork(num));

        //operations-2
        int a = num + 123;
        return Ok(a);
    }
Run Code Online (Sandbox Code Playgroud)

和DoWork方法

    private bool DoWork(int num)
    {
        //operations

        return true;
    }
Run Code Online (Sandbox Code Playgroud)

我想做的是在从 Postman 调用该端点时在后台运行 DoWork 方法,但我想在 Postman 中获得结果,然后调试 DoWork 方法(从 DoWork 方法中的断点) - 这可能吗?

在那一刻,控制器操作和 DoWork() 同时执行,但是当我达到

return Ok(a);
Run Code Online (Sandbox Code Playgroud)

应用程序等待 DoWork 而不是返回值。我也尝试过

Task.Factory.StartNew(() => DoWork());
ThreadPool.QueueUserWorkItem(o => DoWork());
Run Code Online (Sandbox Code Playgroud)

但结果是一样的。

我希望 DoWork 方法返回值,但控制器操作方法不需要该值 - 它将在不同的地方使用,不与之连接。

als*_*ami -1

任务是高级线程,可确保您不会阻塞任何上下文。

您要么想使用ASP.NET Core 2.0 中的RabbitMQIHostedService之类的东西来执行请求完成后启动的即发即忘任务。