0

ASP.NET MVC 2 と .NET Framework 3.5 を使用しています。ビューにデータのテーブルがあり、ボタンをクリックすると、テーブル内のすべての情報がサーバー側で行ごとに処理されます。操作のすべての行が完了するまでに時間がかかります。

そのため、すべての行のステータスを保留中、進行中、または完了として与えるなど、すべての行が処理されたら、ビューを更新することを考えました。

タスク並列ライブラリを使用して、長時間実行されるプロセスを処理し、すべての行が処理された後にセッションを更新しようとしました。次に、別のアクション メソッドをロング ポーリングし、定期的にセッション データを取得します。以下に示すように。

しかし、ここでセッションを更新することはできません。

public ActionResult ProcessData()
    {
        ModelData model = HttpContext.Session["ModelData "] as ModelData ;

        Task.Factory.StartNew(() =>
        {
            foreach (Info item in model.DataInfo)
            {
                ProcessRow(item);
                Session["ModelData"] = model;
            }
        });

        return View(model);
    }

 public ActionResult GetLatestModel()
        {
            ModelData model = HttpContext.Session["ModelData"] as ModelData;
            return View(model);
        }

<script type="text/javascript">
    $(document).ready(function() {
        $("#btnSubmit").live("click", function() {
            $.ajax({
                url: '<%= Url.Content( "~/Process/ProcessData" ) %>',
                success: function() {
                    setInterval(UpdateView, 5000);
                }
            });
        });
    });

    function UpdateView() {
        $.ajax({
            url: '<%= Url.Content( "~/Process/GetLatestModel" ) %>'
        });
    }
</script>

これをどのように進めるかわかりません。どんな提案でも大歓迎です。ありがとう。

4

0 に答える 0