Я хочу запустить некоторый код из действия контроллера ASP.NET MVC в новом потоке/асинхронно. Мне не нужен ответ, я хочу запустить и забыть и вернуть пользователю представление, пока асинхронный метод работает в фоновом режиме. Я думал, что класс BackgroundWorker
подходит для этого?backgroundworker блокирование действия контроллера MVC
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-секундную задержку перед возвратом вида? Почему isnt View возвращен мгновенно?
Подробнее, что мне нужно сделать, чтобы сделать эту работу?
Благодаря
Cheers, просто интересно, почему фон работали блоки, хотя? –
Вы можете увидеть код суфпорта BackgroundWorker, чтобы узнать. BackgroundWorker - компонент WinForms, и я думаю, что использовать его в ASP.NET нецелесообразно. – bniwredyc
Вместо того, чтобы создавать новые темы вручную, вы должны, вероятно, использовать ThreadPool.QueueUserWorkItem –