C#编写Windows服务(图文、代码)

开发中有可能会遇到写Windows服务,特别是定时自动运行的服务,比如定时邮件、定时操作数据库、消息队列等等。

1、创建Windows服务项目(下图)

 20160603224245862_3745.jpg          C#编写Windows服务(图文、代码)

2、编写服务的相关代码(这里我直接贴出我的完整代码)

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、添加安装程序(下图)

 20160603224404271_1960.jpg

4、针对服务进行设置,比如名称、启动方式等等(下图)

C#编写Windows服务(图文、代码)

针对设置说明:

将Account的值改为LocalSystem。其他的不用修改

C#编写Windows服务(图文、代码)

针对设置说明:

ServiceName:表示服务的名称,这个名称将会显示在Windows的服务列表中, 这里设置成了“ServiceTestName”

Description:表示针对该服务的说明,这个名称将会显示在Windows的服务列表中。

StartType:表示服务的启动方式,Automatic 是自动启动(在Windows的服务中可以设置)

5、生成成功以后将服务安装到Windows中。这里需要通过Windows的命令来操作(下图)

C#编写Windows服务(图文、代码)

选中图中 VS2015 开发人员命令提示。

将目录定位到项目的bin\Debug目录下面 输入命令:“ installutil   WindowsServiceDemo.exe ”  。其中的exe名称是你项目的名称 (下图)

C#编写Windows服务(图文、代码)

如果提示成功就表明服务已经安装成功了,如果发生错误也会有相对应的提示。

6、在Windows的服务中开启刚才安装的服务(下图),直接启用就好了。

C#编写Windows服务(图文、代码)

这个时候在任务管理器里面就能看见相关的进程,注意进程的名称是项目的名称不是服务的名称

7、卸载服务。运行命令“ installutil  /u WindowsServiceDemo.exe ”  。其中的exe名称是你项目的名称 (下图)

C#编写Windows服务(图文、代码)

发布者:IT柚子,转转请注明出处:https://ityouzi.com/archives/csharp-windows-service-demo.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
IT柚子的头像IT柚子
上一篇 2019年4月2日 下午2:12
下一篇 2019年4月2日 下午2:14

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注