最近由于工作原因,客户需要使用一个实时的进度条,翻阅了多处的资料,基于前人的经验,在其基础上完成了一个多线程Asp.Net进度条。进度条的基本构成,前台使用jquery的进度条,jquery确实是个很好的东西,从开始接触到现在越来越喜欢使用;中间的数据传输,由于我对.Net回调机制的了解,因此选用了回调技术进行数据交互,其他Ajax框架,jquery的Ajax都可以替代,这里主要完成的是初始化进度条、启动进度、读取进度信息、返回进度信息至前台显示;Excel模板生成类,主要工作为获取webservice数据,加载模板,生成xls,压缩xls等多步工作。

     前台jquery的进度条生成这里就不多描述了,另外主要的工作触发信息交互响应,设置进度条信息。

前台JS

 

     这样就完成了整个事件进程的监控和控制,后台处理相对来说基本和之前进度条处理的模式一致,首先启动时,定义一个线程运行,然后在后台设置一个静态变量存储进度条信息,由线程同步该静态变量。这种处理方式在并发用户时由于使用同一静态变量将产生并发冲突,无法正常显示每一个并发用户的处理情况。这里我只进行了一点点小小的改动,使之基本满足并发处理的要求,这里将原有的静态变量改为静态变量数据,将其与Session挂钩,在启动进程时,判断可用数组的位置,将其序号存放入Session中,并将其传入进程,使用数组配合Session达到并发处理的要求,这里可以根据数组的大小来确定并发响应数量。基本的代码如下:

 

后台

 

     我们的业务线程处理类其实就只需要接收数组信息,然后在需要改变进程的地方处理数组内容即可由后台获取该进度信息返回值前台显示。

     整体的思路应该还是众多前人提供的方法思路一致,主要是通过了静态数组和Session的方式,使其更好的处理并发用户状况。如还有更好的方案,借此进行一个沟通和交流。

posted on 2009-01-11 18:10  邵波  阅读(3239)  评论(4)    收藏  举报