2012-04-28 83 views
1


立即aspx页面上的服务器端方法想象一下,我有一个aspx页面,是我的网站主页,用户在它消磨时间。现在我需要在发生一个事件后,这个页面变得更新。例如,如果新用户加入网站,所有用户都会在其主页上看到它。 我使用AJAX定时器用于解决我的问题,一个方法被称为每隔一秒,如果我的网站已经改变了,我可以把它展示给用户。但这不是一个好的解决方案。请告诉我如何在像上面的例子那样的中断之后立即触发一个方法。 (我认为雅虎邮件使用这种方式太当我们得到了一些新的电子邮件)

感谢您的帮助。火灾后中断

回答

0

可以使当前线程“睡眠” entil新的变化出现。每个Web请求都对应一个线程。并且您需要使用全局集合来跟踪所有当前正在睡眠的线程。

var lastMsgTime=Global.NewMsgTime; 
while(true){  
    Thread.Sleep(300); 
    if(!Response.IsClientConnected||RequeGlobal.NewMsgTime!=lastMsgTime){ 
      lastMsgTime!=Global.NewMsgTime; 
      break; 
    } 
} 

你仍然可以使用在客户端AJAX。

+0

谢谢,但我怎么能叫我的方法和更改主页?
例如在主页上填写一个列表框。如果您使用的是ASP.NET控件,则为 – 2012-04-28 06:54:20

+0

。从客户端重新加载页面可能是最简单的解决方案(location.reload();)。否则,如果您希望更好地使用用户,您可以考虑使用JavaScript和JSON格式的数据操作DOM。 – 2012-04-28 06:59:55

+0

即。一旦Global.NewMsgTime更改,请重新加载所有客户端页面。 – 2012-04-28 07:01:41