我有一些片在Default.aspx.cs文件中的代碼它的Page_Load函數中這樣寫的:如何以5秒的延遲重複調用一個函數? (用C#ASP.NET)
protected void Page_Load(object sender, EventArgs e)
{
//code stars here
...
//code ends here
}
什麼,我想的是,這段代碼將運行連續5秒延遲。我如何在這裏做到這一點? 謝謝。
我有一些片在Default.aspx.cs文件中的代碼它的Page_Load函數中這樣寫的:如何以5秒的延遲重複調用一個函數? (用C#ASP.NET)
protected void Page_Load(object sender, EventArgs e)
{
//code stars here
...
//code ends here
}
什麼,我想的是,這段代碼將運行連續5秒延遲。我如何在這裏做到這一點? 謝謝。
從您的編輯中,構建一個聊天應用程序需要的不僅僅是每5秒鐘運行一個重複任務的頁面。
對於簡單聊天,您可以在Javascript中使用AJAX和setInterval()
方法來實現此目的,但這樣做可能會將所有線程與Apache服務器等HTTP服務器捆綁在一起。
更謹慎的聊天可以使用許多技術中創建的獨特的HTTP服務器,您可以根據node
查看新興技術,如socket.io
。
看着你的評論我看到你實際上建立了一個聊天工具,這對於連續請求每5秒更有意義。
我會推薦使用ASP.NET Web方法和AJAX技術來實現這一點。
使用jQuery.ajax
你可以提出一個要求,每5秒的JavaScript返回新的聊天消息
類似以下內容將是你的JavaScript/jQuery的一個良好的開端:
setInterval(function() {
$.ajax({
url: "/Chat.asmx"
, type: "POST"
, contentType: 'application/json; charset=utf-8'
, data: '{ ConversationID: "' + ConversationID + '"}'
, dataType: 'json'
, success: function (data) {
//do something with data
}
});
}, 5000);
Chat.asmx然後將是您的Web方法。考慮的ASP.NET Web方法的詳細信息:
http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/
一個更快的方法,但不推薦,會使用jQuery.load
在那裏你可以有聊天消息中的中繼器的獨立的.aspx頁面上並保持裝載到這一個div您的網頁像:
setInterval(function() {
$(".chatmessages").load("ChatConversation.aspx?id=" + ConversationID);
}, 5000);
見jQuery.load查找有關此
更多信息作爲其他人認爲,使用Ajax和從clietn EV讓您的數據5秒鐘。 這是一個小樣本,應該讓你開始。
你需要包含jQuery javascript框架才能工作。
客戶方的javascript:
// execute this on dom ready
$(document).ready(function() {
// call function getData every 5 seconds:
setInterval("getData()", 5000);
});
// Call an asp PageMethod via an ajax call
function getData() {
$.ajax({
type: "POST",
async: true,
contentType: "application/json; charset=utf-8",
url: "YourPage.aspx/GetData",
// optional post some data
// data: JSON.stringify(data),
success: dataReceived
});
}
// callback function is called, when data is recevied
function dataReceived(data, textStatus, jqXHR) {
// your data is in data.d
}
在你有你的aspx頁面至極寫有「頁法」的服務器端的是,你可以通過一個AJAX調用javascript調用一個靜態方法:
public class YourPage : Page
{
[WebMethod]
public static object GetData() {
// return your data here
return new {Data1 = ..., Data2 = ...};
}
}
您可以通過參數將數據傳遞給您的頁面方法。參數的名稱必須完全匹配您傳遞給$ .ajax的json對象屬性的名稱。
一旦你的ASP。NET請求已處理完所有與它相關的對象。您的頁面對象不再有效,無法每隔X秒連續執行一次任務。編寫一些只會減慢請求處理速度的東西是沒有意義的......它們應該儘可能快地發生。 –
其實我正在聊天系統上工作,所以我需要每5秒鐘後檢查任何傳入消息,我需要這樣做。請給我一個方法來做到這一點(如任何定時功能或任何...) 我會感謝您的幫助。 – Azeem
您不需要在一個請求中在服務器上每5秒運行一次此代碼。您需要每隔5秒從客戶端請求此代碼。 – StuperUser