我想在新线程/异步中从ASP.NET MVC控制器操作运行一些代码。我不关心响应,我想触发并忘记并在异步方法在后台运行时返回用户视图。我认为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);
}
为什么此代码会导致返回View之前有10秒的延迟?为什么View不会立即返回?
更重要的是,我需要做些什么来完成这项工作?
由于
答案 0 :(得分:7)
你可以开始新的主题:
public ActionResult MyAction()
{
var workingThread = new Thread(Foo);
workingThread.Start();
return View("Thankyou");
}
void Foo()
{
Thread.Sleep(10000);
}