我用ASP.NET开发一个网络应用程序,我在后台的Application对象里开了一个线程,其作用是不定时更新某些数据。
我想做到后台一旦更新数据前端浏览器马上就刷新显示出来。
目前我的想法是前端用JavaScript设置一个定时器间隔很短的时间通过AJAX获取后台的数据。
请问还有更加高效的方法吗?
我想做成那种类似事件机制的,后台告诉前端数据更新了,而非前端定时向后台请求。
谢谢。
我想做到后台一旦更新数据前端浏览器马上就刷新显示出来。
目前我的想法是前端用JavaScript设置一个定时器间隔很短的时间通过AJAX获取后台的数据。
请问还有更加高效的方法吗?
我想做成那种类似事件机制的,后台告诉前端数据更新了,而非前端定时向后台请求。
谢谢。
<script type="...">
function frushData()
{
//update html
}
</script>后台:
void FrushHtml()
{
//调用前台的代码
}
我把代码贴出来大家就应该明白了。
我新建了一个Global.asax文件,我用它来保存程序级的变量、对象等。
以下是整个文件的内容:using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Threading;namespace WebAppCenterServer
{
public class Global : System.Web.HttpApplication
{
public static MyObject myObject = new MyObject(); protected void Application_Start(object sender, EventArgs e)
{
Thread workThread = new Thread(myObject.DoWork);
workThread.Start();
} protected void Session_Start(object sender, EventArgs e)
{ } protected void Application_BeginRequest(object sender, EventArgs e)
{ } protected void Application_AuthenticateRequest(object sender, EventArgs e)
{ } protected void Application_Error(object sender, EventArgs e)
{ } protected void Session_End(object sender, EventArgs e)
{ } protected void Application_End(object sender, EventArgs e)
{ }
}
}我先声明了一个对象myObject,然后当Global.asax的内置对象Application启动的时候我开启了一个线程,执行DoWork方法。DoWork方法不定时地更新myObject中的一些变量,如一个字符串。
当这些变量改变的时候,能够在一个WebForm.aspx中显示出来。这就是我的目的。
我遇到的问题是我不想做成前端定时向后台请求输出,而是想做成后台数据一改变,调用相关的函数也能使前台数据改变,但是不晓得应该弄使得WebForm.aspx显示改变的数据。