先将数据转为DataTable ,并以Session存储,然后用ajax进行回调访问,从0开始,直到DataTable.Rows.Count结束,每次以rowIndex为来回调参数function Go(int rowIndex){
   jQuery.get("go.ashx",{"rowIndex":rowIndex},function(data){
       //这里得到结果,然后显示处理
       if(rowIndex>=0 && rowIndex<rowCount-1)
       {
         Go(rowIndex);
       }
   });
}Go(0);

解决方案 »

  1.   

    能不能后台有个线程啊,这个线程一直读取静态队列的值,而且这个线程不退出,不重复new,可以响应多个用户的请求,用户的请求就是把参数传到静态队列里,然后线程根据这个参数,自己干自己的事,每次的结果保存到数据库里,这种线程模式如何实现,这是我自己想的,但是不知道该如何实现
      

  2.   


    可以的,定义一个静态队列(queue)保存用户要做的操作(或是存在数据库里面),自己建一个或是多个线程不停的去读这个队列。如果是多线程,注意在给队列操作的时候加锁。
      

  3.   

    网站有A.ASHX,负责HTML页面请求,A.ASHX把请求加入网站CACHE,需要加LOCK。
    网站有B.ASHX,负责提供CACHE信息的接口。
    网站有C.ASHX,负责更新CACHE信息的接口。
    然后写一个WCF的WINDOWS任务,这个任务就是,每隔一段时间轮询B.ASHX,来获取需要处理的队列,每处理完队列中的一个请求,就调用C.ASHX来更新CACHE,删除CACHE中的这个请求。HTML请求了A.ASHX,后就显示请求处理中,然后每隔一段时间轮询B接口,查看自己的请求在CACHE中是否还存在,不存在说明请求处理完毕。
      

  4.   


    这种方法我觉的也是没有办法的办法啦,但是我想尽量用asp.net 实现,系统太复杂会出问题的,asp.net下有什么好的机制没,
      

  5.   

    你觉得这个麻烦,那么在Global.asax中的Application.Start事件中,定义一个timer,所有"WCF的WINDOWS任务"中的逻辑即可在这个timer对象的Elapsed事件中执行,这样就不用请求B.ASHX和C.ASHX了,可以在这个timer对象的Elapsed事件中直接查询和操作CACHE。
    这种方法我觉的也是没有办法的办法啦,但是我想尽量用asp.net 实现,系统太复杂会出问题的,asp.net下有什么好的机制没,