background image

C#编写 Windows 服务的基本过程

编写 Windows 服务是一种比较高级的编程技术,内部使用了很多 Windows 操作系

统的核心功能,但微软.NET 框架已经很好的封装了这些技术细节,使得我们可以很方便

的使用 C#编写自己的 Windows 服务,其基本过程一般为

1.

       

创建 C#工程

。创建一个 EXE 工程,可以是 WinForm 或者命令行格式的。添加对

System.ServiceProcess.dll 和 System.Configuration.Install.dll 的引用。

2.

       

创建服务类

。新增一个类,该类型继承 System.ServiceProcess.ServiceBase

类型,在构造函数中设置 ServiceName 属性来指明该服务的名称。然后重载它的

OnStart 方法来响应启动服务的事件,重载 OnStop 方法来响应停止服务的事件,

重载 OnPause 方法来响应暂停服务的事件,重载 OnContinue 方法来响应恢复提

供服务的事件。在重载这些方法时必须要立即返回,其中不能出现长时间的操作,

若处理时间过长则 Windows 服务管理器会觉得该 Windows 服务停止响应而报错。

为此我们可以使用一个线程来进行实际的工作,而 OnStart 方法创建线程,

OnStop 方法关闭线程,OnPause 方法挂起线程,而 OnContinue 方法来恢复运

行线程。

3.

       

启动服务

。在 main

函数中调用

System.ServiceProcess.ServiceBase.Run( 

自定义服务类的实例 )

”来运行服务。比如

System.ServiceProcess.ServiceBase.Run( new MyService() )

”,这里的

MyService 就是继承自 ServiceBase。

4.

       

安装服务

。新增一个类,该类型继承自

System.Configuration.Install.Installer

类型,该类型用于配合微软.NET 框架自带的安装命令行工具 InstallUtil.exe 的。

我们为该类型附加

System.ComponentModel.RunInstallerAttribute

特性,并