Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

您现在的位置:首页 > 技术文档 > ajax

asp.net线程批量导入数据时通过ajax获取执行状态

来源:中文源码网    浏览:160 次    日期:2024-05-15 03:08:38
【下载文档:  asp.net线程批量导入数据时通过ajax获取执行状态.txt 】


asp.net线程批量导入数据时通过ajax获取执行状态
前言
最近因为工作中遇到一个需求,需要做了一个批量导入功能,但长时间运行没个反馈状态,很容易让人看了心急,产生各种臆想!为了解决心里障碍,写了这么个功能。
通过线程执行导入,并把正在执行的状态存入session,既共享执行状态,通过ajax调用session里的执行状态,从而实现反馈导入状态的功能!
上代码: 前端页面




批量导入数据










后台页面:
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,共享完毕!
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

相关内容