0

我正在制作一个 ASPNET MVC 解决方案,在其中我使用 async/await 来发出一些外部请求。当任务通过调用 Task.WhenAll 完成时,我有一个 ContinueWith,我将一些数据保存到数据库中。我对 async/await 有点陌生,我发现在实际调用 ContinueWith 之前,对我的操作的请求返回并更新了 UI。这也意味着如果我需要用户身份,则必须在具有请求上下文的同时将其传递给 Continue with。现在我需要做一些特别的事情来确保服务器在返回 ActionResult (aspnet mvc) 之后真正处理请求吗?我记得看过一些关于 RunInBackground 的东西,但我再也找不到它了。

Action中的代码就像

await Task.WhenAll(tasks).ContinueWith(OnTagsMetaCollected, result);


    return Json(result, JsonRequestBehavior.AllowGet);

首先我做了一些任务,这些任务都被执行了。当一切都完成后,我想计算一些新结果,这些结果在 OnTagsMetaCollected 内部完成,并添加到结果(列表)中。修改后的结果从动作返回。

我不确定这是解决这个问题的最佳结构,所以我欢迎任何建议:)。

4

1 回答 1

3

解决方案非常简单:使用await而不是ContinueWith. await将正确地将请求上下文(包括用户身份)流向async方法的其余部分。

于 2013-07-26T22:23:08.993 回答