繁体   English   中英

为什么Task.Factory.StartNew()。continuewith()无法按预期工作

[英]Why Task.Factory.StartNew().continuewith() Not working as expected

在Asp.Net MVC项目中,我有一个Asynchronus控制器,魔杖也有一个Task类型的动作来实现Asynchronus功能。

好吧,我有以下代码,

Action startMethod = delegate() { CreateUserFunctionality(user.UserID); };
            return Task.Factory.StartNew(startMethod).ContinueWith(
                    t =>
                    {
                        return (ActionResult)RedirectToAction("Profile", "UserProfile");
                    });

我也有CreateUserFunctionality作为

public void CreateUserFunctionality(int UsrId)
{
  if (UsrId !=0)
  {
     _userService.NewFunctionality(UsrId);
  }
}

我希望该函数将启动作业CreateUserFunctionality并为我返回用ContinueWith函数编写的视图。 但是在我的情况下,continuewith部分总是等待CreateUserFunctionality完成。 我的目标是立即返回视图,而不要等待CreateUserFunctionality完成,因为它应该在后台继续。 请让我找出我在这里缺少的东西。

当然它将等待,因为您使用的是ContinueWith方法。如果不想等待,只需启动您的任务并将其保留。立即返回ActionResult:

 var task = Task.Factory.StartNew(startMethod);
 return RedirectToAction("Profile", "UserProfile");

文档:

Task.ContinueWith方法:创建在目标Task完成时异步执行的延续

因此它按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM