想象一下,我有一个aspx页面,它是我网站的主页,用户花时间在它上面。现在我需要在发生事件后,此页面变为更新。例如,如果新用户加入网站,则所有用户都会在其主页上看到该用户。
我使用ajax计时器来解决我的问题,每隔一秒调用一个方法,如果我的网站已被更改,我可以向用户显示。但这不是一个好的解决方案。请告诉我如何在中断之后立即触发方法,如上例所示。
(我认为当我们收到一些新的电子邮件时,雅虎邮件也会这样使用)
谢谢你的帮助。
答案 0 :(得分:0)
你可以使当前线程“睡眠”,以便进行新的更改。每个Web请求都对应一个线程。并且您需要使用全局集合来跟踪所有当前正在睡眠的线程。
var lastMsgTime=Global.NewMsgTime;
while(true){
Thread.Sleep(300);
if(!Response.IsClientConnected||RequeGlobal.NewMsgTime!=lastMsgTime){
lastMsgTime!=Global.NewMsgTime;
break;
}
}
你仍然会在客户端使用ajax。