backgroundworker блокирует действие контроллера MVC

Я хочу запустить некоторый код из действия контроллера 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, где более подробно объясняю наши требования.

15
задан Don Stewart 26 April 2011 в 04:36
поделиться