.Net MVC - HostingEnvironment.QueueBackgroundWorkItem 后台进程实现

.Net MVC - Background process implementation with HostingEnvironment.QueueBackgroundWorkItem

我正在寻找类似于 MVC 中的后台进程的东西。

要求是我应该 运行 .Net MVC 应用程序中的后台 process/thread,它将是异步的并且不等待前台/ UI 中的操作。类似于发射后忘记。

我正在尝试使用 HostingEnvironment.QueueBackgroundWorkItem。可以使用它还是推荐其他任何东西?我是 MVC 中的电枢,在此先感谢。

如果你想在控制器中使用后台作业HostingEnvironment.QueueBackgroundWorkItem是正常的解决方案。

例如,启动后台操作并忘记

 public class HomeController : Controller
    {
        [HttpPost]
        public ActionResult Index()
        {
            Action<CancellationToken> workItem = SomeBackGroundWork;
            
            // start background work and forget
            HostingEnvironment.QueueBackgroundWorkItem(workItem);

            return RedirectToAction("Home");
        }

        private async void SomeBackGroundWork(CancellationToken cancellationToken)
        {
            await Task.Delay(2000,cancellationToken);

            // or you can do http request to web site
            using (var client = new HttpClient())
            {
                var response = await client.PostAsync("http://google.com",  new StringContent(""), cancellationToken);

            }
        }
     }