当前位置:编程学习 > C#/ASP.NET >>

关于timer不定时触发的问题

各位,我在applocation_start中定义了TIMER测试,希望能每1秒钟刷新一下时间,但是为什么老是不刷新呢以下是我的代码
 void Application_Start(object sender, EventArgs e) 
    {
        // 在应用程序启动时运行的代码
        System.Timers.Timer myTimer = new System.Timers.Timer();
        myTimer.Interval = 1000;
        //关联事件 
        myTimer.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_Elapsed);
        
        myTimer.AutoReset = true;
        //给Application["TIMEDEMO"]一个初始值 
        Application.Lock();
        Application["TIMEDEMO"] = DateTime.Now.ToString();
        Application.UnLock();
        myTimer.Enabled = true;
        myTimer.Start();


    }

关联的事件代码:
   void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        Application.Lock();
        Application["TIMEDEMO"] = DateTime.Now.ToString();
        Application.UnLock();
    }

小弟想做一个定时操作数据库的功能,先测试一下这种方法是否行得通,请大家给点已经,谢谢!!
--------------------编程问答--------------------  Application_Start方法执行完成后,你能保证myTimer   不被释放吗? --------------------编程问答-------------------- 你还是写在相应页面上把 --------------------编程问答--------------------  这个怎么写在相应页面上啊,这个是后台程序,定时自动运行 --------------------编程问答-------------------- timer被垃圾回收了吧 --------------------编程问答-------------------- 你要把Timer 加入到Application变量里面 --------------------编程问答-------------------- System.Timers.Timer   myTimer   =   new   System.Timers.Timer(); 
void   Application_Start(object   sender,   EventArgs   e)   
        { 
                //   在应用程序启动时运行的代码 
                myTimer.Interval   =   1000; 
                //关联事件   
                myTimer.Elapsed   +=   new   System.Timers.ElapsedEventHandler(myTimer_Elapsed); 
                
                myTimer.AutoReset   =   true; 
                //给Application["TIMEDEMO"]一个初始值   
                Application.Lock(); 
                Application["TIMEDEMO"]   =   DateTime.Now.ToString(); 
                Application.UnLock(); 
                myTimer.Enabled   =   true; 
                myTimer.Start(); 


        } 

关联的事件代码: 
      void   myTimer_Elapsed(object   sender,   System.Timers.ElapsedEventArgs   e) 
        { 
                Application.Lock(); 
                Application["TIMEDEMO"]   =   DateTime.Now.ToString(); 
                Application.UnLock(); 
        } 

要声明一个全局Timer,这样才能保证Application_Start方法执行完成后,myTimer 不被释放。
不然myTimer被释放了,就产生不了每1秒刷新一次的效果了。 --------------------编程问答-------------------- Damon_King 
 我照你的做法,定义了全局TIMER 但是还是不行啊 --------------------编程问答-------------------- 怎么知道没有运行呢?
我这里测试过,可以正常的运行。 --------------------编程问答-------------------- 那就奇怪了啊,我这里怎么就不行呢,老是触发不了 --------------------编程问答-------------------- 我用了楼主的代码一行也没有改变,试到我的程序里一是可以正常运行的。

不明白楼主说的不触发是什么,你设置断点不会停下来吗?还是没有达到你要的效果? --------------------编程问答-------------------- 我是说,正常运行时,页面上那个时间会变动的,但是我这里测试页面上的时间根本就不变; --------------------编程问答-------------------- 楼主可以参考使用setTimeout方法,
查看:http://www.51fy.cn/web/JavaScript/200708/41698.html
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,