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>
これをどのように進めるかわかりません。どんな提案でも大歓迎です。ありがとう。