Windows服务运行时间常用设置

1、用Timer控制每隔多长时间运行一次

Windows服务使用Timer控件并不是在工具箱上拖拽过来的,

而是System.Windows.Forms命名空间下的组件,即使用的Timer应该是System.Timers.Timer.

解决方法:

方法一:打开"工具箱"---右键---"选择项"---筛选器输入system.time


这个Timer控件的属性是system.Timer下的。不是System.Windows.Form。



方法二:
直接在后台手动新建一个timer,并设置其属性和事件。

        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            System.Timers.Timer timer1 = new System.Timers.Timer(1000);//实例化Timer类,设置间隔时间为1000毫秒; 
            timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);//到达时间的时候执行事件;    
            timer1.AutoReset = true;//设置是执行一次(false)还是一直执行(true);    
            timer1.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;  
        }

        protected override void OnStop()
        {
            timer1.Enabled = false;
        }

        private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            //此处添加服务需要执行的代码
        }





2、控制定点运行Windows服务

例如在12点运行服务

        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            System.Timers.Timer timer1 = new System.Timers.Timer(60*60*1000);//实例化Timer类,设置间隔时间为1小时; 
            timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);//到达时间的时候执行事件;    
            timer1.AutoReset = true;//设置是执行一次(false)还是一直执行(true);    
            timer1.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;  
        }

        protected override void OnStop()
        {
            timer1.Enabled = false;
        }

        private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            if (DateTime.Now.Hour == 12)
            {
                //执行代码
            }
        }


3、不设置时间

不设置运行时间,可以设置一个线程

  public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
           transfer_thread = new Thread(new ThreadStart(run_transfer));
            transfer_thread.Start();  
        }

        protected override void OnStop()
        {
          transfer_thread.Abort();
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值