C# Windows服务开发入门(count)

网友投稿 368 2022-08-17

C# Windows服务开发入门(count)

一、概念名称

Windows服务(即以前的 NT 服务),使您能够创建在它们自己的Windows会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这种服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。

二、创建Windows服务

2.1、创建项目

新建->项目->Windows 桌面->Windows 服务。

项目右键属性->应用程序->输出类型,可以看出它是属于"Windows 应用程序"。

2.2、添加安装程序

打开Service1.cs->空白处右键->添加安装程序。

2.3、设置安装信息

打开ProjectInstaller.cs。

2.3.1、serviceInstaller1

点击serviceInstaller1,在属性中设置服务信息,此示例是创建一个"HelloWorld"的服务。

说明:

Description:服务描述,直接显示到Windows服务列表中的描述。

DisplayName:服务显示名称,直接显示到Windows服务列表中的名称。

ServiceName:服务名称,启动或停止服务时的标识。

StartType:启动类型,如自动、手动等。

2.3.2、serviceProcessInstaller1

点击serviceProcessInstaller1,在属性中设置运行服务的账户类型。

2.4、生成项目

考虑到后面涉及到的Debugger调试方法,此处选择Release模式进行生成。

三、安装与卸载服务

3.1、InstallUtil.exe

在VS安装目录下将InstallUtil.exe拷贝到项目的Release文件夹下,InstallUtil.exe在VS2017的路径为:C:\Windows\Microsoft.NET\Framework\v4.0.30319。

3.2、安装服务

在Release文件夹的地址栏中输入"cmd"调出命令提示符窗体:

安装服务命令:

InstallUtil.exe LinkTo.Test.WindowsService.exe

启动服务命令:

net start HelloWorld

当然,一般我们使用批处理的方式来安装与卸载服务。

在Release文件夹下面,创建一个"安装服务.bat"的批处理文件:

在运行中输入"services.msc"进入服务,即可看到新建的HelloWorld服务:

3.3、卸载服务

在Release文件夹下面,创建一个"卸载服务.bat"的批处理文件:

四、服务定时器

一般来说,服务都会设置每隔多长时间执行一次任务,这里使用System.Threading.Timer来做个简单的日志记录,将日志写入到Release\Log文件夹下。

五、调试服务

由于Windows服务程序不能直接执行,所以不能直接打断点进行调试。调试服务的常用方式有以下两种:

5.1、附加到进程

服务启动后,点击调试->附加到进程->选择LinkTo.Test.WindowsService->附加。

5.2、Debugger

#if DEBUG

if (!Debugger.IsAttached)

Debugger.Launch(); //当进程运行到这里的时候会自动停下来并弹出提示框

Debugger.Break(); //这个方法和在VS中加入红色的断点是一模一样的

#endif

使用Debugger代码进行调试,在项目生成的时候,需使用Release模式,否则一直会有附加提示,可在配置管理器中修改Release模式。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:自动化运维-记自动添加客户负责人的工作开发
下一篇:Quartz 计时器使用之 给主线程窗体控件赋值方法(quartzite)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~