.net core 获取QueueBackgroundWorkItem的任务

.net core 获取QueueBackgroundWorkItem的任务,.net-core,.net Core,我有一个控制器: private IBackgroundTaskQueue _queue; [HttpPost("Add")] public async Task<ActionResult<long>> Add([FromForm] long data) { return await Task.Run(() => { return Calc(data);

我有一个控制器:

private IBackgroundTaskQueue _queue;

[HttpPost("Add")]
public async Task<ActionResult<long>> Add([FromForm] long data)
{
    return await Task.Run(() =>
                {
                    return Calc(data);
                });
}

private ActionResult<long> Calc(long data)
{
    return new ObjectResult(data);
}

QueueBackgroundWorkItem
在该示例中用于在控制器操作返回其响应后,将要执行的工作排队给后台工作人员

但是,您的示例需要返回一个结果(
long
)。因此,在您的示例中使用这种队列是没有意义的

另一方面,你应该避免使用
任务。在ASP.NET上运行
;您可以直接调用该方法:

[HttpPost("Add")]
public ActionResult<long> Add([FromForm] long data)
{
  return Calc(data);
}
[HttpPost(“添加”)]
公共操作结果添加([FromForm]长数据)
{
返回计算(数据);
}

最简单的解决方案是返回任务

Task<BaseTask> Dequeue();
任务出列();
我在github上安装了一些第一个版本的工作解决方案。解决方案可以通过进度、取消或改进的信息进行扩展

Task<BaseTask> Dequeue();