假定a.aspx页面,Page_Load事件,有4步流程:a, b, c, d。如果执行到b,还没执行完,刷新该页面的时候,后台会不会继续执行剩下的c,d两步流程,再从头开始执行,还是马上就从头开始?

解决方案 »

  1.   

    Page_Load没执行完,能生成html发送给浏览器吗?即使能的话,原方法也会继续执行下去的。刷新页面等于重新new了一个页面实例,重新执行的是新实例的Page_Load方法,原页面实例的Page_Load方法其实早就执行完毕了。
      

  2.   

    解决的办法是在页面弹出一个MODE窗口,显示执行的进度,知道完成自动关闭。
    这样可以阻止用户刷新
      

  3.   


    其实这跟不同的浏览器、你的页面脚本的设计等等都有关系。有人写asp.net程序,总以为如果只有一个用户操作,那么服务器同一时间只可能接收到一条请求。其实这是错误的。用户在页面刷新缓慢时,不但会“狂点鼠标”,而且会尽量去尝试“回退”等各种操作。在一个貌似单一一条操作线索的程序运行时,服务器收到同一用户多条相互冲突的请求消息,是完全“正常”的。所以你写程序就应该在极限条件下——无条件并发的条件下,仍然逻辑正确,不会给数据中插入错误的结果。
      

  4.   

    假设“刷新”时会执行到a,那么在b还没有执行完的时候前端“刷新”,那么你执行的就是 a,b,a,b,c,d。
      

  5.   

    如果一定要有一个顺序,那么ababcd没或者aabbcd都有可能。因为刷新时这个新的a既可能在b之前到达(后发出的消息先到达),也可能在其之后到达,其实更常见的是多线程并发处理。
      

  6.   

    多谢sp1234
    我的abcd四个步骤,都是有关数据库的操作。如果我把这四个步骤都写在一个存储过程里的话,那么,当存储过程执行到一半的时候客户刷新,会出现什么情况?
      

  7.   

    多谢sp1234
    我的abcd四个步骤,都是有关数据库的操作。如果我把这四个步骤都写在一个存储过程里的话,那么,当存储过程执行到一半的时候客户刷新,会出现什么情况?
      

  8.   

    页面上的操作和数据库里面的操作是不一样的吧
    刷新页面的话 数据库还是会执行c d a b c d