我写了一个服务程序,里面用了是timer控件,关键代码如下
protected override void OnStart(string[] args)
        {
            FileStream fs = new FileStream(@"c:\ETLConfig.txt", FileMode.Open);
            StreamReader m_str = new StreamReader(fs);
            StartTime = m_str.ReadLine();
            ToEmailAdress = m_str.ReadLine();
            fs.Close();
            //定义定时器,每一分钟震荡一次
            Timer atimer = new Timer();
            atimer.AutoReset = true;
            atimer.Start();
            atimer.Interval = 1000 * 60;
            atimer.Elapsed += new ElapsedEventHandler(atimer_Elapsed);
        }        void atimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            //获得时钟的时间            int intHour = e.SignalTime.Hour;
            int intMinute = e.SignalTime.Minute;
            int intSecond = e.SignalTime.Second;
            // 定制时间; 读取文本文件中的数据,确定执行时间
            int iHour = Convert.ToInt16(StartTime.Substring(0, 2));
            int iMinute = Convert.ToInt16(StartTime.Substring(2, 2));
            //  int iSecond = 00;            if (intHour == iHour && intMinute == iMinute)
            {
                //执行存储过程              
                ExecutePro();
            }        }
其中,startTime是从文件中读取出来,我上班时能够执行过程,可是我设成晚上时老是不能执行?请问是什么原因?

解决方案 »

  1.   


    atimer.Start(); 
    atimer.Interval = 1000 * 60; 
    atimer.Elapsed += new ElapsedEventHandler(atimer_Elapsed); 把第一行写到后面,不是开始以后再转换,是转化后再开始。。
      

  2.   

    同意2楼的说法 先定义事件间隔
    其次你可以试试 timer.Tick 事件
    timer.Tick:当指定的计时器间隔已过去而且计时器处于启用状态时发生。
    timer.Elapsed: 达到间隔时发生。