Я хочу запустить некоторый код из действия контроллера ASP.NET MVC в новом потоке / асинхронно . Меня не волнует ответ, я хочу запустить и забыть и вернуть пользователю представление, пока метод async работает в фоновом режиме. Я думал, что для этого подходит класс 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-секундную задержку перед возвратом представления? Почему обзор не возвращается мгновенно?
Более того, мы также исключили некоторые другие языки (Go, Clojure, Java ..), что сводит список к Haskell vs D.
Одна проблема, касающаяся D, заключается в том, что недавно проект QtD был приостановлен, поэтому мне любопытно, если в краткосрочной перспективе можно даже считать D адекватным вариантом.
Любые плюсы и минусы, которые могут быть более подходящими в качестве общего языка программирования, охватывающего платформы Linux / MaC / Windows?
Изменить: Позвольте мне просто добавить ссылку на сообщение Я отправил в список D, где более подробно объясняю наши требования.