winform服务中,用timer隔一段时间循环执行方法,到某个时间点让线程休息sleep,后在执行 

解决方案 »

  1.   

      protected override void OnStart(string[] args)
            {
                //int number = Convert.ToInt32(DateTime.Now.Hour.ToString());
                //string timeNow = DateTime.Now.ToShortTimeString();            
                //if (timeNow.Equals("10:36"))
                //{
                //    //Thread.Sleep(1000 * 60 * (60 * 8 - 1));//线程休眠到第二天  
                //    Thread.Sleep(1000 * 60 * 2);
                //}
                //else
                //{
                    //2.5个小时自动更新一次
                    System.Timers.Timer t = new System.Timers.Timer();
                    t.Interval = 1000 * 60 * 60 * 2.5;
                    //t.Interval = 1000 * 60;
                    t.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Click); //Timer_Click是到达时间的时候执行事件的函数
                    t.AutoReset = true; //设置是执行一次(false)还是一直执行(true)
                    t.Enabled = true; //是否执行System.Timers.Timer.Elapsed事件
                    t.Start();
                //}
            }循环执行,到晚上10点线程停止,到第二天早上6点线程开启