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

global.asax中写入定时器发布到服务器不启动

代码如下:
 void Application_Start(object sender, EventArgs e)
    {
        //在应用程序启动时运行的代码
        System.Threading.Thread my_timer1 = new System.Threading.Thread(write_1);
        my_timer1.Start();
        System.Threading.Thread my_timer2 = new System.Threading.Thread(write_2);
        my_timer2.Start();
    }
    //月定时
        private void write_1()
    {
        System.Timers.Timer mytimer1 = new System.Timers.Timer(600000);

        mytimer1.Enabled = true;
        mytimer1.Elapsed += new System.Timers.ElapsedEventHandler(mytimer_month);
        mytimer1.AutoReset = true;
           }
    //日定时 
        private void write_2()
    {
        System.Timers.Timer mytimer2 = new System.Timers.Timer(600000);

        my_timer2.Enabled = true;
        my_timer2.Elapsed += new System.Timers.ElapsedEventHandler(mytimer_day);
        my_timer2.AutoReset = true;
            }

备注:2个定时器 的事件 省略
为了方便做统计,我写了2个定时器,现在问题是 我在本地跑的时候是正常的,昨晚我发布到服务器上今早我看的时候发现定时器没启动,请教各位,如何处理这个问题呢,保证我每次重新部署后都能正常启动定时器,谢谢 在线等待!! --------------------编程问答-------------------- 都是用线程System.Threading.Thread。Timer 试试不要使用System.Timers.Timer
也可能是你创建的Timer
太多了 --------------------编程问答-------------------- TIMER的使用 --------------------编程问答-------------------- 有什么具体的解决方法吗? --------------------编程问答-------------------- 用window服务代替。 web应用程序不是一直在运行的。 --------------------编程问答-------------------- --------------------编程问答--------------------
这种定时的的任务。。

建议建windows计划。。 --------------------编程问答-------------------- 难道要独立写一个windows服务? 如果改写成 如下 行不行?
 void Application_Start(object sender, EventArgs e)
    {
        //在应用程序启动时运行的代码
        System.Threading.Thread my_timer1 = new System.Threading.Thread(write_1);
        my_timer1.Start();
        System.Threading.Thread my_timer2 = new System.Threading.Thread(write_2);
        my_timer2.Start();
    }
    //月定时
    System.Timers.Timer mytimer1 = new System.Timers.Timer(600000);
    private void write_1()
    {
        mytimer1.Enabled = true;
        mytimer1.Elapsed += new System.Timers.ElapsedEventHandler(mytimer_month);
        mytimer1.AutoReset = true;
        GC.KeepAlive(mytimer1);
    }
    //日定时 
    System.Timers.Timer my_timer2 = new System.Timers.Timer(600000);
    private void write_2()
    {
        //System.Timers.Timer my_timer2 = new System.Timers.Timer(24*3600000);
        my_timer2.Enabled = true;
        my_timer2.Elapsed += new System.Timers.ElapsedEventHandler(mytimer_day);
        my_timer2.AutoReset = true;
        GC.KeepAlive(my_timer2);
    }
将原先的定时时间作为global的全局变量,再加入GC.KeepAlive();
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,