.Net Windows Service(服务) 调试安装及System.Timers.Timer 使用
Windows Service(服务) 是运行在后台的进程
1、VS建立 Windows 服务(.NET Framework)
2、添加Timer
双击Service1.cs可以拖控件(System.Windows.Forms.Timer)这儿注意命名空间哦,
双击 trmer1 生成事件,修改事件方法如下:
App.config:
<appSettings> <add key="TimerExecTime" value="0001-01-01 10:07:00"/> </appSettings>
Service1.cs
private void timer1_Tick(object sender, EventArgs e) { _logger.Info("timer1_Tick"); DateTime execTime = DateTime.Parse(ConfigurationManager.AppSettings["TimerExecTime"]); _logger.Info("timer1_Tick" + execTime.Year); if (execTime.Year == 1) { _logger.Info("yea"+ execTime.Hour + "Minute"+ execTime.Minute); DateTime curTime = DateTime.Now; if (execTime.Hour == curTime.Hour && execTime.Minute == curTime.Minute) { //每天几小时几分执行代码 } } }
进入Service1.Designer.cs 修改如下:
#region 组件设计器生成的代码 /// <summary> /// 设计器支持所需的方法 - 不要修改 /// 使用代码编辑器修改此方法的内容。 /// </summary> private void InitializeComponent() { this.components = new System.ComponentModel.Container(); //this.timer1 = new System.Timers.Timer(this.components); this.timer1 = new System.Timers.Timer(); // // timer1 // this.timer1.Interval = 30000; //this.timer1.Tick += new System.EventHandler(this.timer1_Tick); this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Tick); this.timer1.AutoReset = true;//设置是执行一次(false)还是一直执行(true); this.timer1.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件; // // Service1 // this.ServiceName = "Service1"; } #endregion public System.Timers.Timer timer1;
3、调试方法引用:
https://www.cnblogs.com/xiebin1986/archive/2011/12/15/2288893.html
4、安装与卸载
在Service1.cs 右键=》添加安装程序 ,生成 ProjectInstaller.cs
serviceInstaller1 设置如下图:
serviceProcessInstaller1设置如下图:
生成时
Install.bat
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\installutil.exe 路径Release Service.exe Net Start 服务名 sc config 服务名 start= auto
Uninstall.bat
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\installutil.exe /u 路径Release Service.exe