.net Service定时启动

来源:互联网 发布:淘宝基础版 全屏店招 编辑:程序博客网 时间:2024/06/05 08:33
1.创建WindowsService

2.Service1添加安装程序

     设计->右键->添加安装程序;

3.ProjectInstaller设置属性

     serviceInstaller1  

          Modifiers:public;

          ServiceName:Service1(你的服务名称);

          StartType:Automatic;

     serviceProcessInstaller1

          Account:LocalSystem;(默认User的情况下Start.bat启动后需要输入账号密码)

4.Service1代码

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.Linq;using System.ServiceProcess;using System.Text;using System.Timers;namespace Service1{    public partial class Service1 : ServiceBase    {        #region 属性        private System.Timers.Timer timer;        private BackgroundWorker worker;        #endregion        public Service1()        {            InitializeComponent();        }        /// 启动服务        /// <summary>        /// 启动服务        /// </summary>        /// <param name="args"></param>        protected override void OnStart(string[] args)        {            Init();        }        /// 初始化服务        /// <summary>        /// 初始化服务        /// </summary>        private void Init()        {            worker = new BackgroundWorker();            worker.DoWork+=new DoWorkEventHandler(worker_DoWork);            timer = new System.Timers.Timer();            timer.Interval = 60 * 1000;//1分钟执行一次//1000*60*60 1小时//1000*60*60*24 1天            timer.Elapsed+=new ElapsedEventHandler(timer_Elapsed);            timer.Enabled = false;            timer.Start();        }        /// 定时执行        /// <summary>        /// 定时执行        /// </summary>        /// <param name="sender"></param>        /// <param name="args"></param>        void timer_Elapsed(object sender,ElapsedEventArgs args)        {            if (!worker.IsBusy)            {                worker.RunWorkerAsync();            }        }        /// 后台执行进程        /// <summary>        /// 后台执行进程        /// </summary>        /// <param name="sender"></param>        /// <param name="args"></param>        void worker_DoWork(object sender, DoWorkEventArgs args)        {            try            {                MainFunction();            }            catch (Exception ex)            {            }        }        private void MainFunction()        {            //主要代码        }        /// 停止服务        /// <summary>        /// 停止服务        /// </summary>        protected override void OnStop()        {            timer.Stop();        }    }}

5.配置文件  

    在项目中右键->添加新建项目->应用程序配置文件,默认名称App.config

   在文件中添加程序所需的框架,<ConnectionStrings>中添加数据库连接,<appSettings>中添加服务器IP

  (如果程序涉及调用SAP接口,需要在<appSettings>中添加destination

6.调试

    Debug文件夹中启动start.bat,然后在vs中工具->附加到进程找到服务名,添加后程序会执行到断点处,就可以调试了;

    注意服务名是Service.exe,不是Service.vshost.exe。如果没有找到服务名,勾选显示所有用户的进程,就可以找到了;

  (如果需要部署到服务器,只需要将Debug文件夹拷到相应的文件夹下,启动start.bat即可)








此外放上start.batstop.bat的代码:

   start.bat

@ECHO off
cls
color 0A
ECHO 安装APP SERVER...
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.EXE Service1.exe
net start Service1
pause
EXIT

    stop.bat

@ECHO off
cls
color 0A
ECHO 安装APP SERVER...
net stop Service1
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.EXE /u Service1.exe
pause
EXIT











阅读全文
0 0
原创粉丝点击