我用ASP.NET开发一个网络应用程序,我在后台的Application对象里开了一个线程,其作用是不定时更新某些数据。
我想做到后台一旦更新数据前端浏览器马上就刷新显示出来。
目前我的想法是前端用JavaScript设置一个定时器间隔很短的时间通过AJAX获取后台的数据。
请问还有更加高效的方法吗?
我想做成那种类似事件机制的,后台告诉前端数据更新了,而非前端定时向后台请求。
谢谢。

解决方案 »

  1.   

    这个不是可以通过后台调用前端代码来解决吗?比如:
    <script type="...">
    function frushData()
    {
        //update html
    }
    </script>后台:
    void FrushHtml()
    {
        //调用前台的代码
    }
      

  2.   

    呵呵,1楼没懂我的意思。我的后台数据更新代码是在ASP.NET的Application对象的一个线程中,似乎其不能调用到某个aspx网页对应的cs文件中的内容吧~
      

  3.   

    只要 保持 无刷新状态 就可以了 用ajax   然后根据线程 重新绑定你需要的事件
      

  4.   


    我把代码贴出来大家就应该明白了。
    我新建了一个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显示改变的数据。