5
我想从一个新的线程/异步运行ASP.NET MVC控制器操作中的一些代码。我不关心响应,我想开火并忘记,并在异步方法在后台运行时返回用户视图。我认为BackgroundWorker
类适合这个?backgroundworker阻止MVC控制器动作
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秒?为什么视图没有立即返回?
更重要的是,我需要做些什么来完成这项工作?
感谢
干杯,只是不知道为什么工作背景虽块? – 2010-10-07 09:32:49
你可以看到BackgroundWorker的soucre代码来找出。 BackgroundWorker是WinForms组件,我认为在ASP.NET中使用它是不正确的。 – bniwredyc 2010-10-07 10:13:38
而不是手动新增线程,您应该使用ThreadPool.QueueUserWorkItem – 2011-08-22 16:53:30