1.Windows服务简单介绍
Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序,主要用于长时间运行的功能或者执行定时任务。一般情况下,用户不能通过用户界面来安装和启动Windows服务程序,服务的启动方式有自动启动和手动启动两种。我们可以在运行中输入services.msc 命令打开服务管理界面,在这里可以进行启动或者停止服务:
2.C#开发windows服务
1.windows服务开发流程
1.1 windows的基本开发流程
使用.Net可以很方便地开发windows服务,下边通过一个栗子演示下开发windows服务的简单流程。
首先创建一个Windows服务项目,如下图我们创建了一个叫MyService的服务项目
然后打开自动生成的Service1.cs,该文件默认有两个方法: OnStart()和OnStop() ,OnStart()指定当服务启动时要执行的操作,OnStop()指定当服务停止时要执行的操作。 我们重写OnStart()方法,让服务开启的时候,每隔一秒在一个文本文件中记录当前时间,代码如下图
然后在右键Service1.cs文件,选择查看设计器,在界面上右键选择添加安装程序,如下图
修改serviceInstaller和serviceProcessInstaller,如下图所示,到这里服务的创建工作就完成了
1.2 安装和卸载Windows服务项目
我们先通过下边命令来安装和卸载服务,其中第二行命令用于安装服务,命令的地址是我们服务项目生成的exe文件所在路径,第三行命令用于卸载服务。
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 InstallUtil C:\Users\ZDZN\source\repos\WindowsServiceDemo\WindowsServiceInstall\bin\Debug\MyService.exe ----------安装服务
InstallUtil -u C:\Users\ZDZN\source\repos\WindowsServiceDemo\WindowsServiceInstall\bin\Debug\MyService.exe ----------卸载服务
执行成功后在服务管理界面可以看到我们刚才安装的服务,这说明服务已经安装成功了:
我们可以在命令行中通过以下命令控制服务的开启和停止:
net start MyService //开启服务 net stop MyService //停止服务 sc delete MyService //删除服务
如果程序没有错误的话,服务启动后会在F盘中生成一个hello.txt文件,内容如下:
2.通过Winform控制windows服务
虽然通过命令行可以实现Windows服务的安装、卸载、启动、停止等操作,但是这样对于用户来说还是太过麻烦。如果能通过Winform来实现这些功能,用户使用起来就方便多了。怎么让Winform控制windows服务呢?
首先要知道的一些知识:使用AssemblyInstaller可以进行Windows服务的安装和卸载,ServiceController可以控制windows服务的启动,停止,暂停,继续等,知道了这些就容易实现了。
添加一个winform应用程序,引用我们的服务项目,程序代码如下,这里的命名都很明显就不详细说明:
View Code
完成这一步后,我们就可以通过可视化界面对服务的安装,卸载,运行,停止进行控制了。
补充:使用TopShelf也可以实现Windows服务的快速开发。