backgroundworker阻止MVC控制器动作

时间:2010-10-05 11:03:19

标签: asp.net-mvc multithreading backgroundworker

我想在新线程/异步中从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不会立即返回?

更重要的是,我需要做些什么来完成这项工作?

由于

1 个答案:

答案 0 :(得分:7)

你可以开始新的主题:

public ActionResult MyAction()
{
    var workingThread = new Thread(Foo);
    workingThread.Start();

    return View("Thankyou");
}

void Foo()
{
    Thread.Sleep(10000);
}