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-секундную задержку перед возвратом представления? Почему вид не возвращается мгновенно?

Более того,

builder = Rack::Builder.new do

  run Rack::Directory.new('')

  map '/' do
    file = File.read('index.html')
    run Proc.new {|env| [200, {'Content-Type' => 'text/html'}, file] }
  end

end

Rack::Handler::Thin.run builder, :port => 3000

Заранее спасибо

19
задан zanona 5 October 2010 в 17:58
поделиться