知识大全 asp.net利用多线程执行长时间的任务,客户端显示出任务的执行进度的示例
Posted 时间
篇首语:人生就像一场舞会,教会你最初舞步的人,未必能陪你走到散场。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 asp.net利用多线程执行长时间的任务,客户端显示出任务的执行进度的示例相关的知识,希望对你有一定的参考价值。
在asp net中执行一个长时间的操作 有的时候需要在在客户端有一个反馈能了解到任务的执行进度 大致看了一下有这么几种做法 ( )按下按钮的时候给出一个<div>提示正在执行任务 执行完毕让这个<div>隐藏 ( )按下按钮的时候跳转到一个提示任务正在执行的页面 执行完毕了再跳转回来 ( )做一个任务类 开启另外一个线程执行任务 同时在客户端或者服务器端保存这个类的实例来跟踪任务的执行情况
( )和( )的情况用的比较多 也比较简单 缺点是不能实时的知道任务的执行进度 而且时间一长可能会超时 ( )的方法就会比较好的解决上面说的 个缺点 下面着重说一下( )的实现方法 先从简单开始 我们做一个任务类 在客户端时时(暂且刷新时间为 秒)得知任务执行了多少时间 并且在成功完成任务后给出执行时间 在任务出错的时候给出出错的时间
前台
<form id= Form method= post runat= server ><asp:label id= lab_state runat= server ></asp:label><br><asp:Button id= btn_starork runat= server Text= 运行一个长时间的任务 ></asp:Button></form>
后台
先是一些类的申明 protected System Web UI WebControls Button btn_starork;protected System Web UI WebControls Label lab_state;//前面 个是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 : this lab_state Text= 还没有开始任务 ; break; case : this lab_state Text= 任务进行了 +((TimeSpan)(DateTime Now w StartTime)) TotalSeconds+ 秒 ; this btn_starork Enabled=false; Page RegisterStartupScript( <script>window setTimeout( location href=location href );</script> ); //不断的刷新本页面 随时更新任务的状态 break; case : this lab_state Text= 任务结束 并且成功执行所有操作 用时 +((TimeSpan)(w FinishTime w StartTime)) TotalSeconds+ 秒 ; this btn_starork Enabled=true; break; case : this lab_state Text= 任务结束 在 +((TimeSpan)(w ErrorTime w StartTime)) TotalSeconds+ 秒的时候发生错误导致任务失败 ; this btn_starork Enabled=true; break;
在按钮单击事件内输入以下代码
if(w State!= ) this btn_starork Enabled=false; w runwork(); Page RegisterStartupScript( <script>location href=location href;</script> ); //立即刷新页面
另外建立一个任务类 代码如下
public class work public int State= ;// 没有开始 正在运行 成功结束 失败结束 public DateTime StartTime; public DateTime FinishTime; public DateTime ErrorTime;
public void runwork() lock(this)//确保临界区被一个Thread所占用 if(State!= ) State= ; 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= ;i< ;i++)cmd ExecuteNonQuery(); conn Close(); //以上代码执行一个比较消耗时间的数据库操作 State= ; catch ErrorTime=DateTime Now; State= ; finally FinishTime=DateTime Now;
运行这个页面 看到每秒页面刷新一次反馈任务执行到现在的时间 在结束后给出任务总的用时 (如果任务出错也给出出错时间)
cha138/Article/program/net/201311/15769相关参考
ASP.NET使用多线程范例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Web开发中使用多线
按照操作执行所需的资源类型我们可以将操作分为cpu绑定型操作和I/O绑定型操作前者主要是利用cpu进行密集运算后者大部分操作处理时间花在I/O处理上(比如文件系统网络资源)对于I/O绑定型的操作我
Asp.net直接保存文件到客户端 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在我们的系统的
Asp.Net2.0自带的客户端回调 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! AspNet
知识大全 asp.net向客户端注册JavaScript脚本
asp.net向客户端注册JavaScript脚本 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 以 Cassini 来宿主 ASP. NET 客户端
以Cassini来宿主ASP.NET客户端 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 早在年
asp.net获取客户端IP地址网卡 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
TogetthewindowsusernamethroughprogramaticallyCompulsaryweneedtosetthewebserver OpentheInternetInf
使用Java多线程实现任务分发 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 多线程下载由来已久
JavaSocket多线程服务端、客户端 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! //主方