Я хочу запустить некоторый код из действия контроллера ASP.NET MVC в новом потоке / асинхронно. Меня не волнует ответ, я хочу запустить, забыть и вернуть пользователю представление, пока асинхронный метод работает в фоновом режиме. Я думал, что класс BackgroundWorker
подходит для этого?
public ActionResult MyAction()
{
var backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += Foo;
backgroundWorker.RunWorkerAsync();
return View("Thankyou");
}
void Foo(object sender, DoWorkEventArgs e)
{
Thread.Sleep(10000);
}
Почему этот код вызывает 10-секундную задержку перед возвратом просмотра? Почему представление не возвращается мгновенно?
Если говорить более конкретно, что мне нужно сделать, чтобы эта работа работала?
Спасибо