本帖最后由 speak13579 于 2012-11-12 10:32:13 编辑

解决方案 »

  1.   

    timer想长时间运行最好放到asax
      

  2.   

    例如:
    ing System.Timers;
     2
     3
     4protected void Application_Start(Object sender, EventArgs e)
     5        {
     6            System.Timers.Timer timer = new System.Timers.Timer(1000);
     7
     8            //AutoReset 属性为 true 时,每隔指定时间循环一次;
     9            //如果为 false,则只执行一次。
    10            timer.AutoReset = true;
    11            timer.Enabled = true;
    12            timer.Elapsed += new System.Timers.ElapsedEventHandler(this.setTime);
    13            
    14            Application.Lock();
    15            Application["time"] = DateTime.Now.ToString();
    16            Application.UnLock();
    17        }
    18
    19        public void setTime(Object sender, ElapsedEventArgs e)
    20        {
    21            Application.Lock();
    22            Application["time"] = DateTime.Now.ToString();
    23            Application.UnLock();
    24        }
      

  3.   

    是这样写就不会出错吗? public void setTime(Object sender, ElapsedEventArgs e)
    20        {
    21            Application.Lock();
    22            Application["time"] = DateTime.Now.ToString();
                  //在这里面加程序吗?
    23            Application.UnLock();
    24        }
      

  4.   

    不是,asax是后缀名
    .asax:Global.asax 文件(也叫做 ASP.NET 应用程序文件)是一个可选的文件,该文件包含响应 ASP.NET 或 HTTP 模块引发的应用程序级别事件的代码。
      

  5.   


    我这个用的是timer控件,并且有几个也可以吗?
      

  6.   

    做成Application级的,而不是页面级的,因为后者的生存周期很短,如果强行引用timer,则那个Page也无法回收掉,要不你就做成Page级的static的,在方法里定义的会很快被回收掉
      

  7.   

    这个time是什么变量?为什么要锁住它?
    程序代码到底是在lock和unlock之间加,还是在lock'unlock之后加?
      

  8.   

    编写webform程序的时候,长时间的timer会造成IIS超时。不建议在webform中用timer控件!
      

  9.   

    webform程序怎么可能用到长时间计时呢? 要知道web程序是无状态的。 主要你服务器端运行的超时了,客户端就无法看到你的信息了。 你想实现的是不是定时更新客户端的信息?
    如果是这样的话建议使用ajax轮询!