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