c#服务

一、创建过程

1.创建Windows Service项目

从Visual C# 工程中选取 Windows 服务(Windows Service)选项,给工程一个新文件名,然后点击 确定。

2、 右键点击Service1.cs,查看代码, 用于编写操作逻辑代码。逻辑代码包括两个部分,OnStart和OnStop。我们主要修改的是OnStart中的内容,即:服务开启之后执行的逻辑

3、由于我们需要每隔一段时间就执行一次,一般使用timer,便于隔一段事件执行一回,在代码中添加一个timer,并实现timer的Elapsed事件。主要代码:

4、创建安装服务。双击解决方案中Service1,打开视图设计器。

5 –> 在视图内【右键】——-【添加安装程序】。项目中添加了ProjectInstaller.cs文件,该文件中视图自动会添加俩个组件 
serviceProcessInstaller1 
serviceInstaller1

6、选中serviceProcessInstaller1组件,查看属性,设置account为LocalSystem

7、选中serviceInstaller1组件,查看属性 
设置ServiceName的值, 该值表示在系统服务中的名称 
设置StartType, 如果为Manual则手动启动,默认停止,如果为Automatic为自动启动 
设置Description,添加服务描述

ServiceName:该值表示在系统服务中的名称 。即红色框中的部分,这个值不能为空,否则在系统服务中找不到(以前做服务一不小心就这样了).

设置Description,添加服务描述:

使得一个Windows服务程序能够正常运行,我们需要像创建一般应用程序那样为它创建一个程序的入口点。在Windows服务程序中,我们也是在Main()函数中完成这个操作的。首先我们在Main()函数中创建一个Windows服务的实例,该实例应该是ServiceBase类的某个子类的对象,然后我们调用由基类ServiceBase类定义的一个Run()方法。然而Run()方法并不就开始了Windows服务程序,我们必须通过前面提到的服务控制管理器调用特定的控制功能来完成Windows服务程序的启动,也就是要等到该对象的OnStart()方法被调用时服务才真正开始运行。如果你想在一个Windows服务程序中同时启动多个服务,那么只要在Main()函数中定义多个ServiceBae类的子类的实例对象就可以了,方法就是创建一个ServiceBase类的数组对象,使得其中的每个对象对应于某个我们已预先定义好的服务。

/// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        static void Main()
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new Service1(),
                new Service2() 
            };
            ServiceBase.Run(ServicesToRun);
        }

  

 二、安装过程

a、运行cmd,获取命令提示符win7需要已管理员的身份启动,否则无法安装 

b、由于demo的框架使用的是4.5的,所以输入 cd C:WindowsMicrosoft.NETFrameworkv4.0.30319 回车
切换当前目录,此处需要注意的是,在C:WindowsMicrosoft.NETFramework目录下有很多类似版本,具体去哪个目录要看项目的运行环境,例 如果是.net framework2.0则需要输入 cd C:WindowsMicrosoft.NETFrameworkv2.0.50727 --------------------- 本文来自 小鬼当家家 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/xiaoguidangjiajia/article/details/52371354?utm_source=copy 

c . 输入 InstallUtil.exe E:…TestServert.exe 回车 
说明:E:…TestServer.exe表示项目生成的exe文件位置

打开服务,就可以看到已经安装的服务了

三、卸载

卸载很简单,打开cmd, 直接输入 sc delete TestServer便可.删除服务的时候,E:…TestServert.exe这个路径必须存在,否则会删除不成功。

四、调试

a. 通过附加到进程调试(在网上查到过,不过没试过)

b . 创建另外的项目,单独调试服务中的方法,即demo中 DoWork()方法,测试方法的正确性。

c . 直接安装服务,运行,通过日志来判断服务的运行状况。

比较喜欢的是b c 两种方法联合起来使用。

部分内容从摘抄自: 
创建Windows服务与安装

原文地址:https://www.cnblogs.com/michellexiaoqi/p/9728411.html