执行存储过程,不等待结果(angular/.net core 2)

jqjz2hbq  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(323)

我工作在一个应用程序与前端角6和后端.net核心2。
我希望,如果有某种情况,执行存储在数据库(mysql)中的过程,不管用户继续做什么,都需要几分钟的时间来执行。我不需要从那个过程中收集任何结果。
我该如何启动它,让它继续运行,而不管用户做什么,即使他关闭了浏览器?
我试过几种方法。。。

[HttpGet]
 [Route("Check/{idCheck}")]
 public async Task ComprobarDatos(int idCheck)
 {
      try
      {
         int? timeout = _context.Database.GetCommandTimeout();
         _context.Database.SetCommandTimeout(600);
         await _context.Database.ExecuteSqlCommandAsync("call CheckProcess({0});", idCheck)
                    .ConfigureAwait(false);
         if(timeout!= null && timeout > 0)
         {
            _context.Database.SetCommandTimeout(timeout);
         }
      }
      catch (Exception ex)
      {
         _logger.LogError("Ocurrió un problema ejecutando el procedimiento CheckProcesscon id {0}: " + ex.Message, idCheck);
      }
 }

我也尝试过:

public IActionResult ...
...
_context.Database.ExecuteSqlCommand("call CheckProcess({0});", idCheck);
return Ok();

以及:

public IActionResult ...
...
_context.Database.ExecuteSqlCommandAsync("call CheckProcess({0});", idCheck)
.ConfigureAwait(false);
return Ok();

以及:

public IActionResult ...
...
_context.Database.ExecuteSqlCommandAsync("call CheckProcess({0});", idCheck)
.ConfigureAwait(true);
return Ok();

它总是等待存储过程完成,以便继续执行代码。
谢谢您!

kninwzqo

kninwzqo1#

您可以通过使用后台服务器来完成这些任务。
在每个请求中启动一个新的后台任务 return 后台任务执行存储过程

相关问题