C# 调用Hangfire BackgroundJob.Enqueue方法时是否应该使用异步包装器?

C# 调用Hangfire BackgroundJob.Enqueue方法时是否应该使用异步包装器?,c#,asp.net,.net,hangfire,C#,Asp.net,.net,Hangfire,将Enqueue方法放入异步包装器中并让控制器以这种方式调用它是一个好主意吗 哪一个更好,为什么 同步: public IActionResult AddLogs(List<Log> logs) { BackgroundJob.Enqueue(() => DM.AddLogsBackground(logs)); return Ok(); } public async Task<IActionResult&g

将Enqueue方法放入异步包装器中并让控制器以这种方式调用它是一个好主意吗

哪一个更好,为什么

同步:

    public IActionResult AddLogs(List<Log> logs)
    {
        BackgroundJob.Enqueue(() => DM.AddLogsBackground(logs));
        return Ok();
    }
    public async Task<IActionResult> AddLogs(List<Log> logs)
    {
        await DM.AddLogs(logs);
        return Ok();
    }

    public async Task AddLogs(List<Log> logs)
    {
        BackgroundJob.Enqueue(() => AddLogsBackground(logs));
    }
public IActionResult AddLogs(列出日志)
{
BackgroundJob.Enqueue(()=>DM.AddLogsBackground(logs));
返回Ok();
}
异步:

    public IActionResult AddLogs(List<Log> logs)
    {
        BackgroundJob.Enqueue(() => DM.AddLogsBackground(logs));
        return Ok();
    }
    public async Task<IActionResult> AddLogs(List<Log> logs)
    {
        await DM.AddLogs(logs);
        return Ok();
    }

    public async Task AddLogs(List<Log> logs)
    {
        BackgroundJob.Enqueue(() => AddLogsBackground(logs));
    }
公共异步任务添加日志(列表日志)
{
等待DM.AddLogs(日志);
返回Ok();
}
公共异步任务添加日志(列表日志)
{
BackgroundJob.Enqueue(()=>AddLogsBackground(logs));
}
报告说:

Enqueue方法不会立即调用目标方法,而是 改为运行以下步骤:

  • 序列化方法信息及其所有参数
  • 基于序列化信息创建新的后台作业
  • 将后台作业保存到永久性存储器
  • 将后台作业排入其队列
  • 哪一个更好,为什么

    作为
    BackgroundJob.Enqueue
    不是等待的(也不是等待的),它将被同步处理

    所以所有的异步语法在这里都是无用的和误导性的

    请注意,您的
    DM.AddLogsBackground
    。但据我所知,在后台作业服务器上处理仍然是同步的

    哪一个更好,为什么

    作为
    BackgroundJob.Enqueue
    不是等待的(也不是等待的),它将被同步处理

    所以所有的异步语法在这里都是无用的和误导性的

    请注意,您的
    DM.AddLogsBackground
    。但据我所知,在后台作业服务器上处理仍然是同步的