我在Default.aspx.cs文件中有一段代码,它在Page_Load函数中编写,如下所示:
protected void Page_Load(object sender, EventArgs e)
{
//code stars here
...
//code ends here
}
我想要的是这段代码将连续运行5秒延迟。我怎么能在这里做到这一点? 谢谢。
答案 0 :(得分:3)
查看您的评论我看到您实际构建了一个聊天工具,这对于每5秒钟的连续请求更有意义。
我建议使用ASP.NET Web方法和AJAX技术来实现这一目标。
使用jQuery.ajax
,您可以在javascript中每5秒发出一次请求,以返回新的聊天消息
以下内容对您的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中,如:< / p>
setInterval(function () {
$(".chatmessages").load("ChatConversation.aspx?id=" + ConversationID);
}, 5000);
有关此内容的详情,请参阅jQuery.load
答案 1 :(得分:2)
正如其他人建议的那样,使用ajax并每隔5秒从clietn获取数据。 这是一个小样本,可以帮助您入门。
你需要包含jQuery javascript框架才能工作。
Clientside 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对象属性的名称完全匹配。
答案 2 :(得分:1)
通过编辑,构建聊天应用程序不仅需要每5秒运行一次重复任务的页面。
对于简单的聊天,您可以使用AJAX和Javascript中的setInterval()
方法实现此目的,但这样做可能会将所有线程与Apache等HTTP服务器捆绑在一起。
更谨慎的聊天会使用在许多技术中创建的独特HTTP服务器,您可能会根据socket.io
查看node
等新兴技术。