在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
做一个任务类,在客户端时时(暂且刷新时间为1秒)得知任务执行了多少时间,并且在成功完成任务后给出执行时间,在任务出错的时候给出出错的时间。 前台 <form > <asp:label ></asp:label><br> <asp:Button ></asp:Button> </form> 后台 先是一些类的申明: protected System.Web.UI.WebControls.Button btn_startwork; protected System.Web.UI.WebControls.Label lab_state; //前面2个是vs.net自己生成的 protected work w; 在Page_Load里面输入以下代码: if(Session["work"]==null) { w=new work(); Session["work"]=w; } else { w=(work)Session["work"]; } switch(w.State) { case 0: { this.lab_state.Text="还没有开始任务"; break; } case 1: { this.lab_state.Text="任务进行了"+((TimeSpan)(DateTime.Now-w.StartTime)).TotalSeconds+"秒"; this.btn_startwork.Enabled=false; Page.RegisterStartupScript("","<script>window.setTimeout('location.href=location.href',1000);</script>"); //不断的刷新本页面,随时更新任务的状态 break; } case 2: { this.lab_state.Text="任务结束,并且成功执行所有操作,用时"+((TimeSpan)(w.FinishTime-w.StartTime)).TotalSeconds+"秒"; this.btn_startwork.Enabled=true; break; } case 3: { this.lab_state.Text="任务结束,在"+((TimeSpan)(w.ErrorTime-w.StartTime)).TotalSeconds+"秒的时候发生错误导致任务失败"; this.btn_startwork.Enabled=true; break; } } 在按钮单击事件内输入以下代码: if(w.State!=1) { this.btn_startwork.Enabled=false; w.runwork(); Page.RegisterStartupScript("","<script>location.href=location.href;</script>"); //立即刷新页面 } 另外建立一个任务类,代码如下: public class work { public int State=0;//0-没有开始,1-正在运行,2-成功结束,3-失败结束 public DateTime StartTime; public DateTime FinishTime; public DateTime ErrorTime; public void runwork() { lock(this)//确保临界区被一个Thread所占用 { 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 i=0;i<5000;i++)cmd.ExecuteNonQuery(); conn.Close(); //以上代码执行一个比较消耗时间的数据库操作 State=2; } catch { ErrorTime=DateTime.Now; State=3; } finally { FinishTime=DateTime.Now; } } } } 运行这个页面,看到每秒页面刷新一次反馈任务执行到现在的时间,在结束后给出任务总的用时。(如果任务出错也给出出错时间) |
请发表评论