jQuery AJAX と asp.NETWebMethod
およびセッション変数を使用して回避策を見つけました。
ワーカー スレッドによって更新されたセッション変数をチェックすることで、以前の質問の 1 つのメソッドを使用しました。WebMethod
ワーカー スレッド:
Session["progress"] = "{\"current\":" + (i + 1) + ", \"total\":" + dt.Rows.Count + "}"
ウェブ方法:
[WebMethod]
public static string GetProgress()
if (HttpContext.Current.Session["progress"] == null) {
return "{\"current\":1,\"total\":1}";
} else {
return HttpContext.Current.Session["progress"];
}
}
私のjQueryは基本的に、毎秒そのAJAX WebMethodを呼び出してループしました。ページの読み込み時に開始され、current = total
「完了」と表示されてループがクリアされた場合、それ以外の場合は「[合計] の行 [現在] を処理中」と表示されます。jQuery UI プログレスバーも追加しました
これは一種の手動の解決策ですが、オーバーヘッドがほとんどなく、私の問題を解決します。予期しないが良い点は、Session 変数を使用しており、WebMethod がページの読み込みをチェックしているため、ワーカー スレッドがアクティブな場合、移動してページに戻ってもプログレスバーが表示されることです。