代码之家  ›  专栏  ›  技术社区  ›  Andrew Bullock

backgroundworker阻止MVC控制器操作

  •  5
  • Andrew Bullock  · 技术社区  · 14 年前

    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秒的延迟?为什么景色不立刻恢复呢?

    更重要的是,我需要做些什么才能让这个工作成功?

    谢谢

    1 回复  |  直到 14 年前
        1
  •  7
  •   bniwredyc    14 年前

    您只需启动新线程:

    public ActionResult MyAction()
    {
        var workingThread = new Thread(Foo);
        workingThread.Start();
    
        return View("Thankyou");
    }
    
    void Foo()
    {
        Thread.Sleep(10000);
    }