麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .NET > 正文

asp.net線程批量導入數據時通過ajax獲取執行狀態

2024-07-10 13:31:51
字體:
來源:轉載
供稿:網友

前言

最近因為工作中遇到一個需求,需要做了一個批量導入功能,但長時間運行沒個反饋狀態,很容易讓人看了心急,產生各種臆想!為了解決心里障礙,寫了這么個功能。

通過線程執行導入,并把正在執行的狀態存入session,既共享執行狀態,通過ajax調用session里的執行狀態,從而實現反饋導入狀態的功能!

上代碼: 前端頁面

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>批量導入數據</title> <style type="text/css">  .pop_body_con { width: 310px; position: fixed; top: 50%; left: 50%; margin-left: -150px; background: #eee; display:none; }   .pop_body_con .pop_head { width: auto; padding: 10px 0; background: #fff; }    .pop_body_con .pop_head a { display: block; color: #717274; font-size: 12px; text-decoration: none; text-align: center; }  .pop_box { width: auto; overflow: hidden; padding: 45px 10px; }   .pop_box .pop_text { float: left; }    .pop_box .pop_text p { padding: 0; margin: 0; font-size: 12px; line-height: 18px; color: #717274;}   .pop_box .progress_bar_con { float: left; width: 220px; position: relative; z-index: 2; }    .pop_box .progress_bar_con p { margin: 0; padding: 0; font-size: 12px; color: #fff; line-height: 18px; width: 100%;             text-align: center; position: absolute; left: 0; top: 0; z-index: 4; }    .pop_box .progress_bar_con .progress_bar_start { width: 100%; height: 18px; background: #C4C0C0; }    .pop_box .progress_bar_con .progress_bar_end { width: 16%; height: 18px; background: #2bd35d; position: absolute; left: 0; top: 0; z-index: 3; }   .pop_box .progress_bar_con { float: left; }  #loading-mask { width: 100%; height: 100%; position: fixed; top: 0px; left: 0px; z-index: 0; background-color: rgba(0, 0, 0, 0.34902); display: none; } </style> <script src="ajax-master/jquery.js"></script> <script>  var MyInterval;  $(function () {   $("#startImport").click(function () {    MyInterval = setInterval(getState, 1000);   });  });    function getState() {   $.ajax({    url: "test.aspx",    type: "Post",    data: { action: "getSession" },    success: function (msg) {     if (msg != "null") {      msg = eval('(' + msg + ')');      if (msg.being == 100) {       setProcessBar(1, 1);       $(".pop_body_con").hide();       $("#loading-mask").hide();       clearInterval(MyInterval);      }      else {       $(".pop_body_con").show();       $("#loading-mask").show();       setProcessBar(msg.being, msg.count)      }     }    }   });  }  function setProcessBar(exeFlag, exeMax) {   $("#progressbar_text").html(parseInt(roundFun(exeFlag / exeMax, 2) * 100) + "%");   $("#progressbar_bar").attr("style", "width:" + parseInt(roundFun(exeFlag / exeMax, 2) * 100) + "%;");  }  function roundFun(number, X) {   X = (!X ? 2 : X);   return Math.round(number * Math.pow(10, X)) / Math.pow(10, X);  } </script></head><body style="background-color: #fff;"> <input id="startImport" type="button" value="導入數據" /> <div id="loading-mask" ></div> <div class="pop_body_con">  <div class="pop_head">   <a href="javascript:;">正在導入…請勿操作!</a>  </div>  <div class="pop_box">   <div class="pop_text">    <p>導入進度:</p>   </div>   <div class="progress_bar_con">    <p id="progressbar_text">0%</p>    <div class="progress_bar_start"></div>    <div class="progress_bar_end" id="progressbar_bar"></div>   </div>  </div> </div></body></html>

后臺頁面:

using System.Linq;using System.Threading;using System.Web;using System.Web.Script.Serialization;using System.Web.UI;using System.Web.UI.WebControls;public partial class test : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) {  string action = Request.Form["action"];  if (!string.IsNullOrEmpty(action))  {   Hashtable temp = tmethod();   if (temp == null)   {    Thread trd = new Thread(new ParameterizedThreadStart(insertData));    trd.Start(action);   }   else   {    if (temp["reCode"].ToString() == "100")    {          Session.Remove("process");    }   }   JavaScriptSerializer ser = new JavaScriptSerializer();   String jsonStr = ser.Serialize(temp);   Response.Write(jsonStr);   Response.End();  } } public Hashtable tmethod() {  return (Hashtable)Session["process"]; } private void insertData(object obj) {  string action = obj.ToString();  int tCount = 100;  for (int i = 0; i < tCount; i++)  {   Hashtable stateHash = setStateVal(0, i, tCount, action);   Session["process"] = stateHash; //存入session,方便共享執行狀態   Thread.Sleep(500);  }  Session["process"] = setStateVal(100, tCount, tCount, action);  Thread.CurrentThread.Abort(); } private Hashtable setStateVal(int code, int beingV, int CountV, string action) {  Hashtable stateHash = new Hashtable();  stateHash["reCode"] = code; //返回狀態值  stateHash["being"] = beingV;  //正在執行值  stateHash["count"] = CountV;  //總值  stateHash["action"] = action;  //總值  return stateHash; }}

ok,共享完畢!

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩毛片网 | 久久久青 | 黄色片在线免费播放 | 国产一区精品在线观看 | 国产精品剧情一区二区在线观看 | 国产精品999在线观看 | 自拍亚洲伦理 | 本站只有精品 | 国产成年人视频 | 国产精品野外av久久久 | 欧美一级免费视频 | 欧美一级黄色片免费观看 | 欧美性生活视频免费 | 99国产精成人午夜视频一区二区 | 777午夜精品视频在线播放 | 国产深夜福利视频在线播放 | 日韩在线毛片 | 欧美成人免费在线视频 | 加勒比色综合 | 国产伦久视频免费观看视频 | 久久免费视频一区 | 日韩黄色免费电影 | 污视频在线免费播放 | 免费看国产 | 亚洲天堂岛国片 | 日韩毛片在线看 | 999精品国产 | 亚洲一级片在线观看 | 毛片国产 | 午夜影院在线免费观看 | 日本网站一区二区三区 | 国产精品成人av片免费看最爱 | 黑人日比视频 | 国产精品视频一区二区三区四区五区 | 免费看搡女人无遮挡的视频 | 性猛交ⅹxxx乱巴西 在线播放中文 | 在线成人免费观看www | 国产chinesehd精品91 | 欧洲成人av| 国产系列 视频二区 | 亚洲不卡 |