2012-04-28 96 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