我遇到了以下问题,我想执行一段可能需要一段时间的代码。在线程仍在运行时返回异步(MVC .Net)
如果用户不得不等待它完成,那将是一个糟糕的用户体验。所以我虽然使用线程。
[HttpPost]
public ActionResult methode(Model model){
Task.Factory.StartNew(() =>
{
// Do a block of code that takes a while
});
return Json(new
{
succes = GetValue()
});
}
在调试时,您可以清楚地看到线程正在执行并且已到达返回码。
问题我在这里得到的结果是线程完成时的实际返回。 (所以我在这里没有获得任何速度)。
这是为什么?我如何使它工作?
在此先感谢!
感谢您的快速响应。任务内的任务不需要返回给客户端。它生成的数据将被保存在数据库中。所以最好和最简单的方法是异步控制器? – Jan
@Jan - 在这种情况下,我认为没有必要有一个异步控制器。使用方法#2排队工作,然后立即返回给客户端。在完全独立的过程中执行工作。 –
我不知道我该如何做到这一点,你可以提供一个代码片段或例子吗?提前致谢! – Jan