[英]Unit testing code that uses 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.