2011-04-29 118 views
0
protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Buffer = false; 

    while (true) 
    { 
     Response.Write(Delimiter + DateTime.Now.ToString("HH:mm:ss.FFF")); 
     Response.Flush(); 

     // Suspend the thread for 1/2 a second 
     System.Threading.Thread.Sleep(500); 
    } 

    // Yes I know we'll never get here, it's just hard not to include it! 
    Response.End(); 
} 

当Response.Flush()被执行,新的网页被发送到客户端 的,而块将服务器 当新maeeage到达客户端上运行下去,有为新数据刷新 继续保持同一位置的可行性如何?不应该创建新的Page对象吗?。我不明白这一点

回答

1

有与你所描述哪几个问题?

1)你所描述的误匹配的客户端和服务器代码。那里的服务器代码只适用于永久挂起的单个AJAX请求,并在客户端得到通知,但未启动新请求。然而,在您的评论中,您描述了一个客户确实开始了一个新请求。这两个概念不会一起工作。

2)详细阐述第1点,请求永不结束意味着大多数浏览器永远不会看到它。 “典型的”AJAX请求在整个内容到达之前不会改变状态,因此请求将永远挂起。您必须结束请求,或者使用一个XHR请求来改变状态,因为每个块都从服务器刷新,只有在某些浏览器中才有效。

3)即使1)工作,代理等最终会终止请求。他们不喜欢永远坐在附近的请求。

4)这是一个阻塞的同步请求,它会疯狂地吃掉服务器资源。在它发生灾难性故障之前,它不会超出线程池限制。

所以,你在这里给出的例子没有意义:)。