asp.net-mvc - 后台工作人员阻止MVC Controller 操作

标签 asp.net-mvc multithreading backgroundworker

我想在新线程中/异步地从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/

相关文章:

java - 使两个不同的方法相互同步或同步变量

c# - 另一个后台 worker

c# - 如何使用MVVM/ICommand模式在WPF中正确实现BackgroundWorker

c# - 从 ASP MVC 中的区域 Controller 链接到根 Controller

asp.net - ASP.NET MVC 应用程序中的 “Bad binary signature”

c# - ASP.NET MVC - 如何限制分页元素的数量并在记录较多时使用 '...'(三个点)进行过滤

c# - 使表格在函数C#中可用

javascript - Cassette Add Individual Javascript Script Link Reference 内联

java - 对象创建作为局部变量

c++ - 异步函数调用,带有检查进度的方法