首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

C#windows服务计时器有关问题

2013-03-25 
C#windows服务计时器问题public partial class Service1 : ServiceBase{System.Timers.Timer timer1//计

C#windows服务计时器问题



  public partial class Service1 : ServiceBase
    {
        System.Timers.Timer timer1;  //计时器
        string message = "Test Message 调用记录!";
        public Service1()
        {
            InitializeComponent();
        }
        protected override void OnStart(string[] args)
        {
            //DateTime dtNow = DateTime.Now;
            //if (dtNow.Hour < 24)
            //{
            //    int hour = 24 - dtNow.Hour;
            //    int minite = 60 - dtNow.Minute;
            //    int miao = 60 - dtNow.Second;
            //    int sleeptime = (hour * 60 * 60 * 1000) + (minite * 60 * 1000) + (miao * 1000);
            //}

            timer1 = new System.Timers.Timer();
            timer1.Interval = 24 * 60 * 60 * 1000;  //设置计时器事件间隔执行时间
            timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);
            timer1.Enabled = true;
        }
        protected override void OnStop()
        {
            this.timer1.Enabled = false;
        }
        private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            try {
                //执行通知运营       
            }
            catch (Exception ex)
            {
                message = ex.Message;
                File.WriteAllText(@"D:\SubOrderWebSerErrorLog\Error-" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt", DateTime.Now.ToString() + "|" + message + Environment.NewLine);


            }
        }

    }




现在是只要服务启动就会自动每24小时执行一次,我希望是,如果我第一次启动服务的时间是16:00,那么就等待8个小时,然后再每天24点的时候执行一次通知运营的函数!  求大神显灵! timer service Windows?服务
[解决办法]

    public partial class Service1 : ServiceBase
    {
        System.Timers.Timer timer1;  //计时器
        string message = "Test Message 调用记录!";
        public Service1()
        {
            InitializeComponent();
        }
        protected override void OnStart(string[] args)
        {
            //DateTime dtNow = DateTime.Now;
            //if (dtNow.Hour < 24)
            //{
            //    int hour = 24 - dtNow.Hour;
            //    int minite = 60 - dtNow.Minute;
            //    int miao = 60 - dtNow.Second;
            //    int sleeptime = (hour * 60 * 60 * 1000) + (minite * 60 * 1000) + (miao * 1000);
            //}

            timer1 = new System.Timers.Timer();
            DateTime now = DateTime.Now;
            if (now.Hour != 0)
            {
                int interval = 0;
                DateTime nextDay = now.AddDays(1).Date;//得到下一天0点的时间
                TimeSpan ts = nextDay - now;//计算时间差
                timer1.Interval = Convert.ToInt32(ts.TotalMilliseconds);

            }
            timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);
            timer1.Enabled = true;
        }


        protected override void OnStop()
        {
            this.timer1.Enabled = false;
        }
        private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            timer1.Interval = 24 * 60 * 60 * 1000;//设置时间间隔
            try
            {
                //执行通知运营       
            }
            catch (Exception ex)
            {
                message = ex.Message;
                File.WriteAllText(@"D:\SubOrderWebSerErrorLog\Error-" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt", DateTime.Now.ToString() + "
[解决办法]
" + message + Environment.NewLine);
            }
        }

    }

热点排行