我正在制作一个ASPNET MVC解决方案,在其中我使用async / await来发出外部请求。当任务完成并调用Task.WhenAll时,我有了一个ContinueWith,将一些数据持久化到数据库中。我对async / await有点陌生,我发现在真正调用ContinueWith之前,对我的操作的请求返回并更新了UI。这也意味着,如果我需要用户标识,则必须在具有请求上下文的同时将其传递给Continue with。现在,我需要做些特殊的事情来确保在返回ActionResult(aspnet mvc)之后服务器实际上处理了请求吗?我记得曾经看过有关RunInBackground的内容,但是我再也找不到它。
动作中的代码就像
await Task.WhenAll(tasks).ContinueWith(OnTagsMetaCollected, result);
return Json(result, JsonRequestBehavior.AllowGet);
首先,我执行一些全部执行的任务。当所有步骤完成后,我想计算一些新的结果,该结果在OnTagsMetaCollected内部完成,并添加到结果(列表)中。修改后的结果从操作中返回。
我不确定这是否是解决此问题的最佳方法,所以我欢迎您提出任何建议:)。
解决方案非常简单:使用await
代替ContinueWith
。await
会将请求上下文(包括用户身份)正确地传递到该async
方法的其余部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句