zoukankan      html  css  js  c++  java
  • C#创建windows服务并定时执行

     一、创建window服务
    
    1、新建项目-->选择Windows服务。默认生成文件包括Program.cs,Service1.cs
    
    2、在XmlService.cs添加如下代码:
     public partial class XmlService : ServiceBase
        {
            #region 属性定义
            /// <summary>
            /// 定时器
            /// </summary>
            Timer _Timer;
            #endregion
    
            public XmlService()
            {
                InitializeComponent();
                
            }
    
            
            void _Timer_Elapsed(object sender, ElapsedEventArgs e)
            {
                CommonHelper ch = new CommonHelper();
                string strxml = ch.GetXML(DBHelper.GetXmlUrl());
                Loger.Info("时间:"+DateTime.Now+";"+strxml);
                EventLog.WriteEntry(strxml);
            }
    
            /// <summary>
            /// 启动服务,达到间隔时间
            /// </summary>
            protected override void OnStart(string[] args)
            {
                Loger.Info("window服务已经启动!"+DateTime.Now);
                _Timer = new System.Timers.Timer();
    
                _Timer.Interval = Convert.ToDouble(Common.DBHelper.GetTime()) * 1000;  //设置计时器事件间隔执行时间
                //_Timer.Interval = 3*60 * 1000;
                _Timer.Elapsed += new System.Timers.ElapsedEventHandler(_Timer_Elapsed);
                _Timer.AutoReset = true;
                _Timer.Enabled = true;
            }
            //停止服务
            protected override void OnStop()
            {
                this._Timer.Enabled = false;
                Loger.Info("window服务已经停止!");
            }
        }
    View Code
     
    二、添加window服务安装程序
    
    1、打开Service1.cs【设计】页面,点击右键,选择【添加安装程序】,会出现serviceInstaller1和serviceProcessInstaller1两个组件
    
    2、将serviceProcessInstaller1的Account属性设为【LocalSystem】, serviceInstaller1的StartType属性设为【Automatic】,ServiceName属性可设置服务名称,此后在【管理工具】--》【服务】中即显示此名称
    
    3、ProjectInstaller.cs文件,在安装服务后一般还需手动启动(即使上述StartType属性设为【Automatic】),可在ProjectInstaller.cs添加如下代码实现安装后自动启动
    
        public ProjectInstaller()
    
            {
    
                InitializeComponent();
    
                this.Committed += new InstallEventHandler(ProjectInstaller_Committed);   
    
            }
    
     
    
            private void ProjectInstaller_Committed(object sender, InstallEventArgs e)
    
            {
    
                //参数为服务的名字
    
                System.ServiceProcess.ServiceController controller = new System.ServiceProcess.ServiceController("服务名称");
    
                controller.Start();
    
            }   
    
     
    
    三、安装、卸载window服务
    
    1、输入cmd(命令行),输入cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319,2.0为cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
    
    2、安装服务(项目生成的exe文件路径)
    
      InstallUtil "E:\WindowsService1\bin\Debug\WindowsService1.exe"
    
    3、卸载服务
    
      InstallUtil  /u "E:\WindowsService1\bin\Debug\WindowsService1.exe"
    
    四、查看window服务
    
    控制面板-->管理工具-->服务,可在此手动启动,停止服务
    
    五、调试window服务
    
    1、通过【事件查看器】查看
    
    2、直接在程序中调试(菜单-->调试-->附加进程-->服务名(这里的服务名是项目名称,不是ServiceName属性自定义的名称,所以建议自定义名称和项目名称保持一致,另外需勾选【显示所有用户的进程】才能看到服务名)-->附加
    
    3. 在程序中打断点调试即可,另外调试服务时服务必须已启动(管理工具-->服务)
    
  • 相关阅读:
    奶酪(NOIP2017 Day2 T1)
    图的遍历(某谷P3916)
    20154331 EXP9web安全基础实践
    20154331 EXP8 web基础
    20154331EXP7 网络欺诈
    20154331 Exp6 信息搜集与漏洞扫描
    Exp5 MSF基础应用
    Exp4 恶意代码分析
    Exp3 免杀原理与实践
    20154331黄芮EXP2 后门原理与实践
  • 原文地址:https://www.cnblogs.com/sky532282294/p/3101133.html
Copyright © 2011-2022 走看看