开发中有可能会遇到写Windows服务,特别是定时自动运行的服务,比如定时邮件、定时操作数据库、消息队列等等。
1、创建Windows服务项目(下图)
2、编写服务的相关代码(这里我直接贴出我的完整代码)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
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.Threading.Tasks; using System.Timers; namespace WindowsServiceDemo { public partial class ServiceMain : ServiceBase { /// <summary> /// 声明定时器 /// </summary> private Timer timer1; public ServiceMain() { InitializeComponent(); } /// <summary> /// 服务开启的时候调用 /// </summary> /// <param name="args"></param> protected override void OnStart(string[] args) { //服务开启的时候初始化定时器 this.timer1 = new Timer(); this.timer1.Enabled = true; this.timer1.Interval = 2000; //间隔时间(毫秒) 这里是表示2秒调用一次 this.timer1.Elapsed += Timer1_Elapsed; //触发的事件 } /// <summary> /// 服务停止的时候调用 /// </summary> protected override void OnStop() { if (this.timer1 != null) this.timer1 = null; } /// <summary> /// 定时器触发的事件,也就是每次做什么事情 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Timer1_Elapsed(object sender, ElapsedEventArgs e) { //禁用定时器 this.timer1.Enabled = false; try { //具体要做的事情,比如操作数据库等等 } catch (Exception ex) { } //开启定时器 this.timer1.Enabled = true; } } } |
3、添加安装程序(下图)
4、针对服务进行设置,比如名称、启动方式等等(下图)
针对设置说明:
将Account的值改为LocalSystem。其他的不用修改
针对设置说明:
ServiceName:表示服务的名称,这个名称将会显示在Windows的服务列表中, 这里设置成了“ServiceTestName”
Description:表示针对该服务的说明,这个名称将会显示在Windows的服务列表中。
StartType:表示服务的启动方式,Automatic 是自动启动(在Windows的服务中可以设置)
5、生成成功以后将服务安装到Windows中。这里需要通过Windows的命令来操作(下图)
选中图中 VS2015 开发人员命令提示。
将目录定位到项目的bin\Debug目录下面 输入命令:“ installutil WindowsServiceDemo.exe ” 。其中的exe名称是你项目的名称 (下图)
如果提示成功就表明服务已经安装成功了,如果发生错误也会有相对应的提示。
6、在Windows的服务中开启刚才安装的服务(下图),直接启用就好了。
这个时候在任务管理器里面就能看见相关的进程,注意进程的名称是项目的名称不是服务的名称
7、卸载服务。运行命令“ installutil /u WindowsServiceDemo.exe ” 。其中的exe名称是你项目的名称 (下图)
发布者:柚子,转转请注明出处:https://ityouzi.com/archives/csharp-windows-service-demo.html