asp.net利用多线程执行长时间的任务,客户端显示出任务的执行进度的示例(二)
2007-12-15 09:32:04 来源:WEB开发网核心提示:protected work w;private void Page_Load(object sender, System.EventArgs e){ // 在此处放置用户代码以初始化页面 if(Session["work"]==null) {w=new work();Sessi
protected work w;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(Session["work"]==null)
{
w=new work();
Session["work"]=w;
}
else
{
w=(work)Session["work"];
}
switch(w.State)
{
case 0:
{
this.div_load.Visible=false;
break;
}
case 1:
{
this.lab_state.Text=""+((TimeSpan)(DateTime.Now-w.StartTime)).TotalSeconds.ToString("0.00")+" 秒过去了,完成百分比:"+w.Percent+" %";
this.btn_startwork.Enabled=false;
Page.RegisterStartupScript("","<script>window.setTimeout('location.href=location.href',1000);</script>");
this.lab_jg.Text="";
break;
}
case 2:
{
this.lab_jg.Text="任务结束,并且成功执行所有操作,用时 "+((TimeSpan)(w.FinishTime-w.StartTime)).TotalSeconds+" 秒";
this.btn_startwork.Enabled=true;
this.div_load.Visible=false;
break;
}
case 3:
{
this.lab_jg.Text="任务结束,在"+((TimeSpan)(w.ErrorTime-w.StartTime)).TotalSeconds+"秒的时候发生错误导致任务失败'";
this.btn_startwork.Enabled=true;
this.div_load.Visible=false;
break;
}
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btn_startwork.Click += new System.EventHandler(this.btn_startwork_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void btn_startwork_Click(object sender, System.EventArgs e)
{
if(w.State!=1)
{
this.btn_startwork.Enabled=false;
this.div_load.Visible=true;
w.runwork();
更多精彩
赞助商链接