我想在新线程中/异步地从ASP.NET MVC Controller 操作中运行一些代码。我不在乎响应,我想触发并忘记并在异步方法在后台运行时向用户返回一个 View 。我以为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 不立即返回?
更重要的是,要完成这项工作我需要做什么?
谢谢
最佳答案
您可以只启动新线程:
public ActionResult MyAction()
{
var workingThread = new Thread(Foo);
workingThread.Start();
return View("Thankyou");
}
void Foo()
{
Thread.Sleep(10000);
}
关于asp.net-mvc - 后台工作人员阻止MVC Controller 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3863024/