namespace csdn { /// <summary> /// WebForm54 的摘要说明。 /// </summary> public class WebForm54 : System.Web.UI.Page { protected System.Web.UI.HtmlControls.HtmlGenericControl div_load; protected System.Web.UI.WebControls.Button btn_startwork; protected System.Web.UI.WebControls.Label lab_state; protected System.Web.UI.WebControls.Label lab_jg; 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(); Page.RegisterStartupScript("","<script>location.href=location.href;</script>"); } } }
public class work { public int State=0;//0-没有开始,1-正在运行,2-成功结束,3-失败结束 public int Percent=0;//完成百分比 public DateTime StartTime; public DateTime FinishTime; public DateTime ErrorTime;
public void runwork() { lock(this) { if(State!=1) { State=1; StartTime=DateTime.Now; System.Threading.Thread thread=new System.Threading.Thread(new System.Threading.ThreadStart(dowork)); thread.Start(); } } }
private void dowork() { try { SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]); SqlCommand cmd=new SqlCommand("Insert Into test (test)values('test')",conn); conn.Open(); for(int p=0;p<100;p++) { for(int i=0;i<10;i++) { cmd.ExecuteNonQuery(); } Percent=p;//这里就是定义百分比,你估计这个操作费多少时间定义多少百分比 } conn.Close(); //以上代码执行一个比较消耗时间的数据库操作 State=2; } catch { ErrorTime=DateTime.Now; Percent=0; State=3; } finally { FinishTime=DateTime.Now; Percent=0; } } } }
