protected override void OnStart(string[] args)
        {
            //在应用程序启动时运行的代码
            //定义定时器 
            int interval = 120 * 60000;//1分钟 = 60000毫秒
            System.Timers.Timer myTimer = new System.Timers.Timer(interval);
            myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
            myTimer.Enabled = true;
            myTimer.AutoReset = true;
        }
        void myTimer_Elapsed(object source, ElapsedEventArgs e)
        {
            步骤1();
            步骤2();        
       }这个服务是2个小时执行一次
在执行的时候,当步骤1();执行完后,过30分后再执行步骤2();
请问怎么实现,谢谢!

解决方案 »

  1.   

    改成30分钟检查一次
            int count = 0;
            
            protected override void OnStart(string[] args)
            {
                //在应用程序启动时运行的代码
                //定义定时器 
                int interval = 30 * 60000;// 1分钟 = 60000毫秒
                System.Timers.Timer myTimer = new System.Timers.Timer(interval);
                myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
                myTimer.Enabled = true;
                myTimer.AutoReset = true;
            }
            void myTimer_Elapsed(object source, ElapsedEventArgs e)
            {
                count++;
                if (count == 4)
                    步骤1();
                else if (count == 5)
                {
                    步骤2();
                    count = 0; // 如果需要重头再来
                }
           }
      

  2.   

    两个Timer 步骤1完成后开始步骤2
      

  3.   

    myTimer_Elapsed 执行周期是2h的话,就用两个timer吧.
    也可以像1L,修改执行周期时间,然后用变量来标识..
      

  4.   

    最好是用2个Timer
    如果只用一个Timer的话,在步骤1后,重新设定Timer的间隔为30分钟,然后你需要把原来的Elapsed上的事件订阅删除,重新订阅,然后在里面处理步骤2的内容。
      

  5.   

    最简单的方法如下:
    ------protected override void OnStart(string[] args)
    {
        //在应用程序启动时运行的代码
        //定义定时器 
        int interval1 = 30 * 60000;// 一个小时的间隔
        int interval2 = 30 * 90000;// 一个半小时的间隔
        System.Timers.Timer myTimer1 = new System.Timers.Timer(interval1);
        System.Timers.Timer myTimer2 = new System.Timers.Timer(interval2);    myTimer1.Elapsed += new ElapsedEventHandler(myTimer_Elapsed1);
        myTimer1.Enabled = true;    myTimer2.Elapsed += new ElapsedEventHandler(myTimer_Elapsed2);
        myTimer2.Enabled = true;
    }
    void myTimer_Elapsed1(object source, ElapsedEventArgs e)
    {
        步骤1();
    }
    void myTimer_Elapsed2(object source, ElapsedEventArgs e)
    {
        步骤2();
    }------------这样步骤1会 一个小时后执行
    步骤2会一个半小时后执行