WEB开发网
开发学院WEB开发ASP.NET asp.net利用多线程执行长时间的任务,客户端显示出... 阅读

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();

Tags:asp net 利用

编辑录入:coldstar [复制链接] [打 印]
赞助商链接