0

私は async/await を使用していくつかの外部要求を行う ASPNET MVC ソリューションを作成しています。タスクが Task.WhenAll の呼び出しで完了すると、ContinueWith があり、データベースにいくつかのデータを保持しています。私は async/await に少し慣れていませんが、ContinueWith が実際に呼び出される前に、アクションへのリクエストが返され、UI が更新されたことを発見しました。これは、ユーザー ID が必要な場合は、リクエスト コンテキストを保持しながら、Continue with に渡す必要があることも意味します。ActionResult (aspnet mvc) が返された後、サーバーが実際に要求を処理することを保証するために何か特別なことをする必要がありますか? RunInBackground について何か見たことがあることを思い出しましたが、再び見つけることができません。

アクションのコードは次のようになります

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


    return Json(result, JsonRequestBehavior.AllowGet);

最初に、すべて実行されるいくつかのタスクを作成します。すべてが完了したら、OnTagsMetaCollected 内で実行され、結果 (リスト) に追加される新しい結果を計算したいと思います。変更された結果がアクションから返されます。

この問題を解決するのに最適な構造かどうかはわかりませんので、どんなアドバイスも歓迎します:)。

4

1 に答える 1

3

解決策は非常に簡単です。await代わりに を使用しContinueWithます。リクエスト コンテキスト (ユーザー ID を含む) をメソッドawaitの残りの部分に適切に渡します。async

于 2013-07-26T22:23:08.993 に答える